Сценарий переподключения Интернета: «Вы не можете вызвать метод для выражения с нулевым значением» - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь создать скрипт, в котором при отключении Интернета он автоматически подключается и подключается к Wi-Fi.Однако есть ошибка, из-за которой я не могу войти в скрипт.

while (Test-Connection 8.8.8.8 -Quiet) {
}

netsh wlan connect wifi-name

$ie = New-Object -Com InternetExplorer.Application 
$ie.Visible = $false
$ie.Navigate("http://address/loginpage.php") 

$link = $ie.Document.GetElementById("btnLogin")
$link.Click()

$ie.Quit()

Возвращается с этой ошибкой:

You cannot call a method on a null-valued expression.
At line:12 char:1
+ $link = $ie.Document.GetElementById("btnLogin")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At line:13 char:1
+ $link.Click()
+ ~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Я также удостоверился, что идентификатор правильный:

Screenshot

1 Ответ

0 голосов
/ 16 сентября 2018

Одна из возможностей заключается в том, что IE еще не завершил загрузку страницы. Это может быть связано с тем, что он пытается загрузить файл автоконфигурации прокси-сервера, связывается с MS для получения новой ленты вкладок или тому подобного.

Попробуйте добавить проверку для свойства busy в IE, чтобы узнать, когда он будет готов с документом. Вот так

$ie = New-Object -com internetexplorer.application
$ie.visible = $false
$ie.navigate($url)

# Sleep while IE is busy. Check 10 times per second, adjust delay as needed
while($ie.Busy) { Start-Sleep -Milliseconds 100 }

# IE is not busy with document anymore, do stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...