ПРИМЕЧАНИЕ. Я работаю над этим в сети intr anet с самозаверяющими сертификатами. Я настоятельно не рекомендую никому использовать этот код где-либо еще.
Я столкнулся с этой же проблемой, и похоже, что документ страницы загружается не полностью. Я обошел его с помощью приведенного ниже кода.
$IE=new-object -com internetexplorer.application
$IE.visible=$true
$IE.FullScreen=$false
$IE.ToolBar = $false
$IE.StatusBar = $false
$IE.MenuBar = $false
$IE.AddressBar = $true
$IE.Resizable = $true
$IE.navigate2("https://URL.com")
$i=0
While ( $IE.busy -eq $true ) {
Start-Sleep -s 1
$i = $i + 1
if ( $i -ge 20 ) { break }
}
$overrideLink = $IE.document.links | where-object {$_.id -eq "overridelink" }
$overrideLink.click()
Однако, похоже, веселье продолжается, когда вы проходите эту страницу. Мне все еще нужно войти в систему и, похоже, мне нужно будет выполнить итерацию через "$ IE .document.forms", чтобы выполнить это вместо использования $ IE .document.getElementById ("username"). Если вам также необходимо выполнить вход, я успешно добавил следующий код.
#Need to wait for webpage to load after bypassing
$i=0
While ( $IE.busy -eq $true ) {
Start-Sleep -s 1
$i = $i + 1
if ( $i -ge 20 ) { break }
}
$loginForm = $IE.document.forms[0]
$usernameForm = $loginForm.children | Where-Object { $_.innerHTML -match "j_username" } #This contains the HTML for the form, so it will always contain the id
$usernameField = $usernameForm.children | Where-Object {$_.id -eq "j_username" }
$usernameField.value = "USERNAME"
$passwordForm = $loginForm.children | Where-Object { $_.innerHTML -match "j_password" } #This contains the HTML for the form, so it will always contain the id
$passwordField = $passwordForm.children | Where-Object {$_.id -eq "j_password" }
$passwordField.value = "PASSWORD"
$loginForm.submit()