无法让 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();
我正在尝试获取 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();