Как выбрать значение в раскрывающемся списке, а затем выполнить обратную передачу с помощью PowerShell и IE 6.0

Это установит значение, но не вызовет обратную передачу:

function SelectValue($ddl, $val) {
    $ddl.options | % {$i = 0}{ if ($_.value -eq $val) { 
            $ddl.selectedIndex = $i; }; $i += 1; }

}

Кроме того, как только я получу обратную передачу, мне нужно будет добавить задержку, например:

    while($ie.ReadyState -ne 4) {
        start-sleep -m 100
    } 

HTML выглядит примерно так:

<select name="ddl" onchange="__doPostBack('ddl','')" language="javascript" id="ddl" class="required" style="width:100%;">
<option value="-- Please Select --">-- Please Select --</option>
<option value="Some Value">Some Value</option>
</select>

Изменить: Почему я хотел бы сделать это в Powershell? Вероятно, WatiN будет намного проще (хотя я никогда не использовал WatiN). Но я просто пытаюсь понять, как использовать Powershell для быстрой, специальной, ограниченной автоматизации веб-сайтов. Я много путешествую и использую разные машины, и Powershell - одна из немногих констант, от которых я могу зависеть.

Решение: оказалось, что это легко и очень полезно, потому что теперь я могу буквально написать сценарий, чтобы открыть страницу, сделать несколько выборов и нажать кнопку отправки, как по волшебству, и это ЛЕГКО. Я думаю, что мои отношения любви / ненависти с Powershell возвращаются к любви. В любом случае ключ заключается в том, чтобы использовать форму отправки вместо использования события onchange, которое, как известно, не запускается при вызове с помощью JavaScript в любом случае. Вот как это сделать:

$frm = $ie.document.getElementById("frm");
$frm.submit();

Я обнаружил, что мне не нужно ждать постбэков. Для полноты нажмите кнопку так же, как в javascript:

$btnReport = $ie.document.getElementById("btnReport")
$btnReport.click() 

2 ответа

Решение

Зачем мне это делать в Powershell? Вероятно, WatiN будет намного проще (хотя я никогда не использовал WatiN). Но я просто пытаюсь понять, как использовать Powershell для быстрой, специальной, ограниченной автоматизации веб-сайтов.

Да, вы должны использовать WatiN, но вы хотите использовать PowerShell? Так что используйте WatiN от PowerShell!

PowerShell - это общий инструмент оболочки / скриптинга / автоматизации. Чтобы добиться цели, PowerShell использует специальные инструменты (COM, WMI, .NET и т. Д.).

Вот с чего начать.

http://poshcode.org/1108

Вы можете использовать iMacros, он предоставляет COM-объект и, следовательно, может использоваться непосредственно из Powershell: http://wiki.imacros.net/PowerShell

Единственный недостаток: это не бесплатно. Для быстрого и простого бесплатного решения попробуйте дополнение iMacros Firefox. Его также можно использовать через командную строку: http://wiki.imacros.net/iMacros_for_Firefox

Другие вопросы по тегам