我想用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
答案 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"