2014-11-04 47 views
0

我使用Powershell來完成一些高級別的自動操作,並且想通過一個網站上的下拉列表中的2個數值循環......不知道如何如何實現它。Powershell - 爲循環訪問數組提供建議

下面的代碼:

 $Array = "FirstItem", "SecondItem" 

     Foreach ($i in $Array) 

     { 
    while($ie.busy) {sleep 1} 
      $doc = $ie.document 
      $ie.document.getElementById("DropDownListBtn").click() 
      $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq '$i'} 
     # Note: without using the variable above, I would expect the statement would look like this: 
       # $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq 'FirstItem'} 
      $link.click() 
     } 

這裏的錯誤:

You cannot call a method on a null-valued expression. 
At line:9 char:28 

+     $link.click <<<<() 

    + CategoryInfo   : InvalidOperation: (click:String) [], RuntimeException 

    + FullyQualifiedErrorId : InvokeMethodOnNull 
+0

這裏您的實際問題是什麼?代碼是否會產生意想不到的結果?你有錯誤嗎? – 2014-11-04 19:40:37

+0

對不起...是的,我得到一個錯誤:你不能調用一個空值表達式的方法。 在行:9字符:28 + $ link.click <<<<() + CategoryInfo:InvalidOperation:(點擊:字符串)[],RuntimeException的 + FullyQualifiedErrorId:InvokeMethodOnNull 不能調用方法上的空高估的表達。 在行:9字符:28 + $ link.click <<<<() + CategoryInfo:InvalidOperation:(點擊:字符串)[],RuntimeException的 + FullyQualifiedErrorId:InvokeMethodOnNull – user4068021 2014-11-04 19:42:34

+0

請編輯您的問題,並添加錯誤信息那裏。正如你所看到的,它在評論中變得不可讀。 – 2014-11-04 19:43:30

回答

0

你需要一些錯誤處理/檢查。

我想通過添加錯誤處理到$ ie和$連接實例代碼,例如啓動:

$ie = <code to create object> -erroraction silentlycontinue; 
if ($?) { 
    # All ok - proceed 
} else { 
    # it failed 
} 

...或者,使用的try ... catch,但是這並不總是工作因爲並非所有的PowerShell調用都會引發異常。

try { 
    $ie = <code to create object> -erroraction silentlycontinue; 
    } 
catch [Exception] { 
    # it failed 
    } 
+0

-erroraction參數只能在cmdlet上使用,而不是在像對象方法調用那樣的對象方法調用上使用 – Paul 2014-11-04 19:58:26

0

謝謝大家。我進一步排除故障,並意識到我需要刪除$ i周圍的單引號:

$link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq $i}