Skip to content

Instantly share code, notes, and snippets.

@jayrgee
Last active October 9, 2022 11:26
Show Gist options
  • Save jayrgee/673f6dce604055db9d3b4659a5903a6a to your computer and use it in GitHub Desktop.
Save jayrgee/673f6dce604055db9d3b4659a5903a6a to your computer and use it in GitHub Desktop.
powershell-selenium-edgedriver.ps1
$url = "https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/"
$linkText = "x64"
# $url = "https://www.nuget.org/packages/Selenium.WebDriver"
# $linkText = "Download package"
$pathWebDriver = Join-Path $PSScriptRoot "WebDriver"
$pathDownloads = Join-Path $PSScriptRoot "downloads"
$pathSnapshots = Join-Path $PSScriptRoot "snapshots"
# Function to escape filenames of websites. Credit to: https://chrisseroka.wordpress.com/2012/11/27/get-website-screenshots-with-custom-web-crawler/
function EscapeFileName {
param($filename)
$pattern = "[{0}]" -f ([Regex]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars()))
$newfile = [Regex]::Replace($filename, $pattern, '_')
$newfile
}
# Function to screenshot the website with Selenium. Credit to: https://chrisseroka.wordpress.com/2012/11/27/get-website-screenshots-with-custom-web-crawler/
$global:images = @()
$global:UrlNames = @()
$global:PrevName = ""
function Take-ScreenShot {
param($driver, $name)
$fileName = ($name + ".png")
$fileName = EscapeFileName -filename $fileName
$driver.Url = $name
$driver.Manage().Window.Maximize()
if (($driver.Url -eq "") -or ($driver.Url -eq "about:blank") -or ($driver.Url -eq "about:constant") -or ($driver.Url -eq $PrevName)) {
Write-Output "[*] Something went wrong for $name"
}
else {
$type = [OpenQA.Selenium.ScreenshotImageFormat]::Png
$driver.GetScreenshot().SaveAsFile(($pathSnapshots + "\" + $fileName), $type)
$global:images += $filename
$global:UrlNames += $name
}
$global:PrevName = $driver.Url
$driver.Navigate().Back()
}
# [System.Reflection.Assembly]::LoadFrom("$($pathWebDriver)\WebDriver.dll")
Import-Module (Join-path $pathWebDriver "WebDriver.dll")
$edgeOptions = New-Object OpenQA.Selenium.Edge.EdgeOptions
$edgeOptions.AddUserProfilePreference("download.default_directory", $pathDownloads)
$edgeOptions.AddUserProfilePreference("download.prompt_for_download", $false)
$edgeOptions.AddArgument("log-level=3")
$driver = New-Object OpenQA.Selenium.Edge.EdgeDriver($pathWebDriver, $edgeOptions)
Write-Host "Browsing to $url"
$driver.Navigate().GoToUrl($url)
$link = $driver.FindElement([OpenQA.Selenium.By]::LinkText($linkText))
Write-Host "download: $($link.getAttribute("href"))"
$link.Click()
Start-Sleep -Seconds 15
Take-ScreenShot -driver $driver -name $url
$driver.Close()
$driver.Quit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment