PowerShell - IE对象,设置值错误

时间:2012-01-28 16:40:01

标签: internet-explorer powershell

我想用PowerShell创建一个脚本来检查航班状态。 但是我不可能设置文本框值。

我该如何解决?提前谢谢!

错误:在此对象上找不到属性“值”;确保它存在并且可以设置。

代码:

#Flight Number (Only Lufthansa)
#For example flight number
[string]$flightNumber = "LH 3102"

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug")
$ie.visible = $true
sleep 5
#while ($ie.busy) {sleep -milliseconds 50}
while($ie.ReadyState -ne 4) {start-sleep -m 100}     

$ie.document.getElementsByName("flightNumber").value = $flightNumber
#Error
$ie.document.getElementsByName("flightNumber").IHTMLInputTextElement_value = $flightNumber
#Error
$ie.document.getElementsByName("flightNumber").IHTMLInputElement_value = $flightNumber
#Error

2 个答案:

答案 0 :(得分:5)

试试这个:

$ie.document.getElementByID("ns_7_CO19VHUC6FFPF0I5O4OBCT2OE4_flightNumber").value = $flightNumber

这对我有用。我通过浏览器查看源代码找到了ID。

我不知道为什么getElementsByName不起作用。也许其他人可以对此有所了解?


编辑:

好的,我明白了。 getElementsByName返回一个集合。您必须遍历集合才能设置值。所以你的代码看起来像这样:

#Flight Number (Only Lufthansa)
#For example flight number
[string]$flightNumber = "LH 3102"

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug")
$ie.visible = $true
sleep 5
#while ($ie.busy) {sleep -milliseconds 50}
while($ie.ReadyState -ne 4) {start-sleep -m 100}     

$elements = $ie.document.getElementsByName("flightNumber")

Foreach($element in $elements)
    {
        $element.value = $flightnumber
    } 

这对我有用。

答案 1 :(得分:1)

非常简单,只需查找标签名称:

$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true

$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} 

# here is where the magic happens
$termsField = $ie.document.getElementsByName("routeDepartureStationName")
@($termsField)[0].value ="powershell"

enter image description here