PowerShell выдает ошибку, говоря, что Click () не существует - PullRequest
0 голосов
/ 20 июня 2019

Я практикуюсь с 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

Так что я почти уверен, что он выдает ошибку либо при попытке щелкнуть мышью, либо потому, что я пометил кнопку неправильно, либо и то, и другое. При попытке создать это я не смог найти идентификатор для кнопки, поэтому я использовал то, что смог найти. В противном случае я не уверен, почему click() не существует, когда это во всех примерах, которые я вижу. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 20 июня 2019

Моя проблема возникла из-за того, что при создании $Link я использовал неправильные теги. Я использовал все тот же код, но поменял строку создания $Link на:

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