Как выбрать значение в раскрывающемся списке, а затем выполнить обратную передачу с помощью 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 и т. Д.).
Вот с чего начать.
Вы можете использовать iMacros, он предоставляет COM-объект и, следовательно, может использоваться непосредственно из Powershell: http://wiki.imacros.net/PowerShell
Единственный недостаток: это не бесплатно. Для быстрого и простого бесплатного решения попробуйте дополнение iMacros Firefox. Его также можно использовать через командную строку: http://wiki.imacros.net/iMacros_for_Firefox