无法获得PowerShell来选择单选按钮

时间:2015-09-03 15:18:01

标签: powershell powershell-v3.0 powershell-v4.0 powershell-ise

我正在尝试使用powershell脚本来打开Internet Explorer,然后访问网站并单击单选按钮。我收到的错误告诉我带有getElementsByTagName的行。它还说我不能为下面的所有行调用null值表达式的方法,包括getElementsByTagName

$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("hidden")
$ie.visible = $true



$doc = $ie.documentElement
$myradio = $doc.getElementsByTagName('radio')|?{$_.type -eq 'radio' -and $_.name -eq 'export'}

$x = 2 #specific radio button
$myradio.setActive()
$myradio.click()

2 个答案:

答案 0 :(得分:1)

因此,使用您提供的网址作为测试,这似乎适用于选择喜欢的颜色的第一个单选按钮:

$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("http://webforms2.googlecode.com/svn/trunk/testsuite/021.html")
$ie.visible = $true

$doc = $ie.Document
$radioButtons = $doc.getElementsByTagName('input') | Where-Object {$_.type -eq 'radio' -and $_.name -eq 'favColor1'}

$x = 0 #specific radio button
$radioButtons[$x].setActive()
$radioButtons[$x].click()

$ie.documentElement似乎不存在,因此为什么你得到空值异常,你需要$ie.document

接下来,您需要一个单选按钮数组供您选择,并且在此示例中输入您需要使用的标记名称,然后您需要使用$ x变量索引到单选按钮数组中以选择哪一个点击。

答案 1 :(得分:0)

我想出来,所以对我来说,我必须首先启动$ ie部分然后继续使用它。 如果IE未打开,Powershell将无法获取COM对象。一旦这部分被弄清楚,一切都像魅力一样。

#gathers COm Objects for IE
$ie = New-Object -ComObject internetexplorer.application;
#Opens IE and navigates to the site
$ie.visible = $true;

foreach($s in $site){
$sName = $s.ServerName
$sLink = $s.Link
"`n"

$url = $site+$results

$ie.navigate($s.Link);

#sleeps for a second
    while ($ie.Busy -eq $true) 
    { 
        Start-Sleep -Milliseconds 1000; 
    } 

#gets export button radio and clicks it
$ie.document.getElementById('exp').click();

#sleeps for another second for page to load
    while ($ie.Busy -eq $true) 
    { 
        Start-Sleep -Milliseconds 1000; 
    } 

#Clicks search button for results page
$button = $ie.Document.getElementsByName('search') | Where-Object {$_.type -eq "button"}
$button.click();