Возникли проблемы с получением powershell для выбора переключателя

Я пытаюсь заставить сценарий 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()

person Leandre Fouche    schedule 03.09.2015    source источник
comment
Вы ждете, пока страница отобразится?   -  person Bacon Bits    schedule 03.09.2015
comment
Можете дать URL?   -  person JPBlanc    schedule 03.09.2015
comment
Я не могу указать URL-адрес из-за политики компании. Вы можете использовать этот сайт здесь для тестирования, его переключатели настроены одинаково webforms2.googlecode.com/svn/trunk/testsuite/021.html   -  person Leandre Fouche    schedule 04.09.2015


Ответы (2)


Таким образом, используя URL-адрес, который вы предоставили в качестве теста, это работает для выбора первого переключателя для любимого цвета:

$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 для индексации массива переключателей, чтобы выбрать, какой из них щелкнуть.

person steoleary    schedule 09.09.2015

Я понял это, поэтому мне пришлось сначала начать с части $ie и работать с ней. Powershell не будет получать COM-объекты, если IE не открыт. Как только эта часть была выяснена, все заработало как шарм.

#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();
person Leandre Fouche    schedule 06.01.2016