【问题标题】:Automating Chrome WebDriver - Select Date from DatePicker using PowerShell and Selenium自动化 Chrome WebDriver - 使用 PowerShell 和 Selenium 从 DatePicker 中选择日期
【发布时间】:2020-02-05 01:57:40
【问题描述】:

非常感谢:

激励我自动化 Chrome 以执行我每天执行的冗余任务。

我希望我可以选择一个日期,而不是在 PowerShell 中使用 Selenium 将密钥发送到日期选择器。

根据this weblink,这就是他们使用 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?

【问题讨论】:

  • 这是本地浏览器日期选择器还是 JavaScript 表示选择器?它是 JavaScript 日期选择器吗,您需要告诉我们是哪一个并为其提供 HTML,因为它需要一些自定义代码才能与之交互。

标签: powershell selenium google-chrome webdriver


【解决方案1】:

感谢您的博客提及,老实说,我不知道我是如何解决您的问题的,但我在谷歌搜索其他内容时做到了。它在 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() 

和平! - M6k

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多