Ошибка вызова метода, поскольку [System .__ ComObject] не содержит имя метода 'IHTMLDOcument3_getElementByTagName ...' - PullRequest
0 голосов
/ 28 марта 2019

Я ищу несколько идей, почему это случилось с моим другом.Я создал полнофункциональный скрипт для входа на сайт, а затем перенаправления на конкретное место этого сайта, поиска и нажатия на некоторые кнопки и выполнения некоторых действий.Но когда я отправляю его своему другу для проверки, у него появляются ошибки (я опубликую их позже)

Сначала подумайте, что я пытался разрешить powershell в своей операционной системе Windows 10.Затем я пытался запустить скрипт от имени администратора, но те же ошибки.

Это полный скрипт, и он прекрасно работает для меня.

$ie = New-Object -ComObject 'internetExplorer.Application'   # start internet explorer browser (default browser)
$ie.Visible= $true # Make it visible

$username = "someusername"  # user name
$password = "somepassword"   # user password

$ie.Navigate("loginURL") #login page

while ($ie.Busy){ Start-Sleep -Milliseconds 100 } 

# Get elements for username and password then set values
$usernamefield = $ie.document.querySelector('[name="username"]').value = "$username"  
$passwordfield = $ie.document.querySelector('[name="password"]').value = "$password"

# Get submit button and perform submit action (click)
$ie.document.querySelector('[name="submit"]').click() 

while ($ie.Busy){ Start-Sleep -Milliseconds 100 }  

# After successfull login perform redirect:
$ie.Navigate("voteURL") # vote page

while ($ie.Busy){ Start-Sleep -Milliseconds 100 }  




    $i = 0
    Write-Host "Voting process started..."
    while($i -lt  4){

            # get all clickable elements with name submit (and not disabled)
            $Btn = $ie.Document.IHTMLDocument3_getElementsByTagName("Input") | where-object {$_.name -match 'submit' -And $_.disabled -NotMatch 'true'}


            if($Btn){
               $Btn.click()
               Write-Host 'Clicked!!'

               while ($ie.Busy){ Start-Sleep -Milliseconds 200 } 

               $ie.Navigate("voteURL")   # redirect back to vote page

               while ($ie.Busy){ Start-Sleep -Milliseconds 200 }  
            } 
        $i++
    } 
    Write-Host "Voting process ended!"


while ($ie.Busy){ Start-Sleep -Milliseconds 100 }  

# Logout Message
Write-Host "Performing logout action"

$ie.Navigate("voteURL")

while ($ie.Busy){ Start-Sleep -Milliseconds 100 } 

# Logout from account
$LogoutBtn = $ie.Document.IHTMLDocument3_getElementsByTagName("Input") | where-object {$_.name -match 'logout'}
$LogoutBtn.click()

while ($ie.Busy){ Start-Sleep -Milliseconds 100 } 

#Write-Host "Closing browser! BYE!"
#$ie.Quit()

Скрипт должен: 1) открыть Internet Explorer,2) войдите в систему, используя имя пользователя и пароль, 3) перейдите к URL-адресу voicePage 4) я ожидаю, что там будут 4 кнопки голосования, поэтому я создаю цикл, и в каждом взаимодействии я искал не отключенные кнопки (кнопки отправки) и выполнял нажатие на них5) каждый щелчок приведет к перенаправлению на другую страницу, и я вынужден был вернуться назад, когда браузер не был занят 6) после всех взаимодействий я выполняю действие выхода из системы

Неожиданный результат от моего друга: неожиданный результат

у нас та же версия powershell 5.1, та же операционная система Windows 10, тот же браузер Internet Explorer 11

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...