我正在使用Powershell进行一些高级自动化,我想在网站的下拉列表中循环显示2个值的数组...不知道如何实现它。
以下是代码:
$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)
您需要一些错误处理/检查。
我首先将错误处理添加到$ ie和$ link实例化代码中,例如:
$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
}
答案 1 :(得分:0)
谢谢大家。我进一步排除故障并意识到我需要删除$ i周围的单引号:
$link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq $i}