方法调用失败,因为[System .__ ComObject]不包含方法名称'IHTMLDOcument3_getElementByTagName ...'

时间:2019-03-28 20:27:13

标签: powershell

我正在寻找一些想法,为什么我的朋友会这样。我创建了用于登录网站的功能齐全的脚本,然后重定向到该网站的特定位置,找到并单击一些按钮并执行一些操作。但是,当我将其发送给我的朋友进行测试时,他遇到了错误(我会在稍后发布)

首先想到的是,我尝试允许他在Windows 10操作系统上使用powershell。 然后我试图以管理员身份运行脚本,但出现相同的错误。

这是完整的脚本,对我来说很好用。

$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)导航到votePage url 4)我希望在那里有4个投票按钮,所以我创建了循环,并且在每次交互中我都在寻找非禁用按钮(提交按钮)并点击它们 5)每次点击都会重定向到另一个页面,当浏览器不忙时,我被迫向后导航 6)在所有互动之后,我将执行注销操作

我朋友的意外结果: unexpected results

我们具有相同版本的Powershell 5.1,相同的操作系统Windows 10,相同的浏览器Internet Explorer 11

0 个答案:

没有答案