Автоматизация Chrome WebDriver - Выберите дату из DatePicker, используя PowerShell и Selenium - PullRequest
2 голосов
/ 25 января 2020

Большое спасибо:

за стремление автоматизировать Chrome для выполнения избыточной задачи, которую я выполняю каждый день.

Я могу sh, чтобы я мог выбрать дату вместо отправки ключей в средство выбора даты с помощью Selenium в PowerShell.

Согласно этой веб-ссылке это то, как они делают это с использованием Python. Задача очень проста, и PowerShell не имеет раздутий, когда дело касается зависимостей.

Вот история со всеми видами ошибок, которые я не могу решить:

$URL = "https://jqueryui.com/datepicker/"

[OpenQA.Selenium.Chrome.ChromeOptions]$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.PageLoadStrategy = "eager"
$ChromeOptions.addArguments('start-maximized')
$ChromeDriver = New-Object -TypeName "OpenQA.Selenium.Chrome.ChromeDriver" -ArgumentList @($ChromeOptions)

$ChromeDriver.Navigate().GoToURL($URL)

$Frame = 0
$SelectFrame = $ChromeDriver.SwitchTo().Frame($Frame)

$SelectFrame.FindElementByXPath("//*[@id='datepicker']").click()

$SelectDate = "15"
$dateWidget = $ChromeDriver.FindElementById("ui-datepicker-div")
$cols = $dateWidget.FindElementByTagName("td")

foreach ($cells in $cols) {
    $date = $cells.getText() 
    if($date -eq $SelectDate) {
        $cells.FindElementByLinkTest($date).click()
        break
    }
}

Pause
Function Stop-ChromeDriver {Get-Process -Name chromedriver -ErrorAction SilentlyContinue | Stop-Process -ErrorAction SilentlyContinue}
$ChromeDriver.Close()
$ChromeDriver.Quit()
Stop-ChromeDriver

Будет ли это можно ли использовать PowerShell тоже?

1 Ответ

1 голос
/ 04 февраля 2020

Спасибо за упоминания в блоге, я, честно говоря, не знаю, как я понял ваш вопрос, но я сделал это, когда гуглил что-то еще. Это полностью выполнимо в PowerShell, попробуйте так после загрузки класса Selenium.

$ChromeDriver.Navigate().gotourl('https://jqueryui.com/datepicker/')
# The following changes the frame, won't give an ugly error out if it fails:
try {$ChromeDriver.SwitchTo().Frame(0) | Out-Null} catch {} 
$ChromeDriver.FindElementsById('datepicker').click()
# For the following, [2] is the month you pick, [2] == March
$ChromeDriver.FindElementsByXPath("//div[@id='ui-datepicker-div']/div/a[2]/span").click() 
# For the following, "10" picks the day of the month, in this case, the 10th
$ChromeDriver.FindElementByLinkText("10").Click() 

Peace! - M6k

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...