无法让 powershell 选择单选按钮

Having trouble getting powershell to pick the radio button

我正在尝试获取 powershell 脚本来打开 Internet Explorer,然后转到网站并单击单选按钮。我收到的错误告诉我带有 getElementsByTagName 的行。它还说我不能为下面的所有行调用空值表达式的方法,包括 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()

因此,使用您提供的 URL 作为测试,这似乎适用于 select 设置最喜欢的颜色的第一个单选按钮:

$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 代替。

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

我想出来了,所以对我来说,我必须先开始 $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();