Powershell, ie9 и getElementById - PullRequest
       5

Powershell, ie9 и getElementById

5 голосов
/ 20 мая 2011

Я успешно использую скрипт для веб-автоматизации с этого сайта: heise веб-автоматизация

Я знаю, что это на немецком языке, но, возможно, кто-то может помочь.

важная часть веб-сайта e-plus:

    <tr>
        <td class="td1">Benutzername:</td>
        <td class="space"><img src="/img/c.gif" alt="" /></td>
        <td class="td2"><input type="text" id="IDToken1OL" name="IDToken1" onfocus="setToken(this)" onblur="getToken(this)" value="Benutzername" /></td>
    </tr>
    <tr>
        <td class="td1">Passwort:</td>
        <td class="space"><img src="/img/c.gif" alt="" /></td>
        <td class="td2"><input type="password" id="IDToken2OL" name="IDToken2" onfocus="setToken(this)" onblur="getToken(this)" value="" class="passwortFake" /></td>
    </tr>

часть скрипта Powershell:

$script:ie = New-Object -comobject InternetExplorer.Application
$ie.visible = $false
$ie.silent = $true
#
$ie.Navigate("https://www.eplus.de/login/login.asp")
LadenWarten(1)
#
$ie.Document.getElementById("IDToken1OL").value = $user
$ie.Document.getElementById("IDToken2OL").value = $passwort
$ie.Document.getElementsByTagName("a") | foreach {
    if ($_.href -eq "javascript:SSO_Submit()") {
        $_.Click()
    }
}

getElementById работал для ie8, но теперь я обновился до ie9, и это не такбольше не работает.

сообщение об ошибке:

+ $ie.Document.getElementById <<<< ("IDToken1OL").value = $user
    + CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

количество аргументов неверно.

все, что мне удалось найти, было подсказкой, что в ie9 изменился getElementById.

Кто-нибудь может помочь?

Спасибо, Дэвид

Ответы [ 3 ]

3 голосов
/ 06 ноября 2014

См. http://www.experts -exchange.com / Web_Development / Web_Languages-Standards / Q_27920160.html -

Цитируется: «Я должен был использовать вызов члена:

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("about:blank")
$doc = $ie.Document

$element = [System.__ComObject].InvokeMember(“getElementById”,[System.Reflection.BindingFlags]::InvokeMethod, $null, $doc, $id)

и для getElementsByTagName:

$elements = @([System.__ComObject].InvokeMember(“getElementsByTagName”,[System.Reflection.BindingFlags]::InvokeMethod, $null, $doc, $tagname))

"

2 голосов
/ 20 мая 2011

При автоматизации только одного конкретного сайта (а сценарий не является универсальным или каким-либо другим сайтом), вы можете попытаться настроить представление совместимости в настройках IE (Инструменты -> Настройки представления совместимости). IE должен переключиться в режим просмотра IE8 при просмотре сайта.

0 голосов
/ 05 февраля 2016

Пример использования querySelector:

  $element = [System.__ComObject].InvokeMember("querySelector",[System.Reflection.BindingFlags]::InvokeMethod, $null, $ie.Document, "$QueryHere")
...