2012-01-28 48 views
6

我想用PowerShell創建一個腳本來檢查航班狀態。 但我無法設置文本框的值。PowerShell - IE對象,設置值錯誤

我該如何解決?先謝謝你!

錯誤:無法在此對象上找到屬性'值';確保它存在並可設置。

代碼:

#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 

回答

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 
    } 

這對我有用。

+2

您也可以訪問集合中的項目直接使用'項目(N)'方法。例如'$ ie.document.getElementsByName( 「FLIGHTNUMBER」)。項目(0).value'。如果只有一個元素在集合中,並且不想爲其設置循環,這會更容易。但是,請確保'getElementsByName'首先返回一個非空值! – 2012-12-12 05:25:53

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