我正在尝试使用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()
答案 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();