IE Automation选择下拉列表选项并使用Powershell刷新页面

时间:2017-01-14 00:12:55

标签: powershell automation getelementbyid

我正在开展一些IE自动化工作,它可以提取网页并修改页面上的选项。这些是文本框,单选按钮和下拉列表框。我可以使用类似的东西修改选项

$name = $doc.GetElementByID("name").value = "Bob"

但是,在此页面上有一个下拉列表框,当您手动更改它时,会出现一组新选项。如果我使用上面的命令选择一个选项,该选项会更改,但页面不会刷新以显示新选项,因此我可以修改它们。是否有“刷新”页面以便在选择下拉列表框中的选项后出现新选项?

希望这是有道理的。一直在搜索,但一直找不到任何东西。

谢谢!

2 个答案:

答案 0 :(得分:0)

我正在使用这段代码在我的代码中触发更改事件,它在某些情况下有效并可能引导您朝着正确的方向发展。

你提供的w3school示例页面表现得很奇怪,我找不到正确的元素,可能与它使用的iFrame有关。

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true
$ie.Navigate("https://www.website.com")


#wait for IE
while ($ie.Busy -eq $true -or $ie.Document -eq $null ){Start-Sleep -seconds 1;} 


$dropDown = $ie.Document.getElementByID( 'mySelect')
$dropDown.value = 2
$dropDown.FireEvent('onchange') 

答案 1 :(得分:0)

这适用于您的示例中的网站(在powershell 5上测试):

$ie = New-Object -ComObject internetexplorer.application
$ie.Visible = $true
$ie.Navigate("https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onchange")
while ($ie.Busy) {Start-Sleep -Milliseconds 500}
$ie.Document.getElementById("iframeResult").contentDocument.getElementById("mySelect")[1].selected = $true
$ie.Document.getElementById("iframeResult").contentDocument.getElementById("mySelect").FireEvent("onchange")