2014-11-04 3 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

실제 질문은 무엇입니까? 코드가 원하지 않는/예기치 않은 결과를 생성합니까? 오류가 있습니까? –

+0

죄송합니다 ... 예, 오류가 발생합니다 : 널 값 표현식에서 메소드를 호출 할 수 없습니다. 줄에 : 9 문자 : 28 + $ link.click <<<<() + CategoryInfo : InvalidOperation : (클릭 문자열) [], RuntimeException을 + FullyQualifiedErrorId : InvokeMethodOnNull 당신은 널의 메소드를 호출 할 수 없습니다 평가 된 표현. 줄에 : 9 문자 : 28 + $ link.click <<<<() + CategoryInfo : InvalidOperation : (클릭 문자열) []의 RuntimeException을 + FullyQualifiedErrorId : InvokeMethodOnNull – user4068021

+0

질문을 편집하고 오류 정보를 추가하세요 그곳에. 보시다시피 댓글에서 읽을 수 없게됩니다. –

답변

0

.

나는 예를 들어, 당신의 $의 예와 $ 링크 인스턴스화 코드에 오류 처리를 추가하여 시작 했죠 :

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

... 나 ... 시도 캐치 사용하지만, 이것은 항상 작동하지 않습니다 모든 PowerShell 호출이 예외를 발생시키는 것은 아닙니다.

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

-erroraction 매개 변수는 op가 사용하는 것과 같은 개체 메서드 호출이 아닌 cmdlet에서만 작동합니다 – Paul

0

모두에게 감사드립니다. 좀 더 문제를 해결하고 $ i 주위에 작은 따옴표를 제거해야한다는 것을 깨달았습니다.

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