PowerShell抛出错误,指出Click()不存在

时间:2019-06-20 15:27:14

标签: powershell internet-explorer click

我正在练习使用PowerShell,今天我想写一个可以将我登录到网站的脚本。对于这个具体示例,我没有用,但我认为这将是一个好习惯。我在引用this时创建了它。这是我到目前为止所拥有的。

$ie = New-Object -ComObject "InternetExplorer.Application"
$ie.Visible = $true

$username = "my@email"
$password = "password"

$ie.Navigate("https://squirrel.ws/login")

While ($ie.Busy -eq $true) {Start-Sleep -Seconds 3;}

$usernameField = $ie.Document.getElementByID('UserEmail')
$usernameField.value = $username

$passwordField = $ie.Document.getElementByID('UserPassword')
$passwordField.value = $password

$link = $ie.Document.getElementByID('$0')
$link.click()

$ie.Quit()

运行此命令时,将显示IE窗口,并几乎立即关闭并显示此错误:

Method invocation failed because [System.DBNull] does not contain a method named 'click'.
At J:\removingForPrivacy\test.ps1 char:1
+ $link.click()
+ ~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

因此,我很确定在尝试单击时,或者因为我对按钮的标记不正确,或者两者都引发了错误。尝试创建此按钮时,找不到按钮的ID,所以我使用了可以找到的按钮。否则,我不确定在我看到的所有示例中为何click()不存在。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我的问题来自以下事实:创建$Link时,我使用了错误的标签。我使用了所有相同的代码,但将$Link创建行替换为:

$Link=$ie.Document.getElementsByTagName("button") | where-object {$_.type -eq "submit"}