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

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

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 ]

1 голос
/ 21 мая 2009

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

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

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

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

http://poshcode.org/1108

0 голосов
/ 22 мая 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...