Автоматизация IE с помощью Windows PowerShell

Я хочу спросить о манипулировании IE через Powershell. Моя цель - написать скрипт, который будет автоматически выполнять некоторые действия в браузере (на стороне клиента - переходить на страницу, выполнять действия, измерять время между ответами и т. Д.)

У меня такая мелочь:

$ie = new-object -com "InternetExplorer.Application"
$ie.visible = $true
$ie.navigate("http://google.com")

Теперь я хочу проверить, остановил ли браузер рендеринг страницы (при условии, что Google загружается примерно за 30 секунд). Как я проверил, $ie | get-member есть свойство (событие) DocumentCompleted, но я не знаю, как получить к нему доступ / сравнить. Как мне это сделать?

Или, может быть, мне следует использовать .NET вместо COM-объекта и начать $ie с него [system.Windows.Forms.WebBrowser]?

ваше здоровье

edit:
Ну ... $ie.busy работает, но (что, возможно, я раньше не прояснил), я хочу знать точный момент конкурса рендеринга страниц. Проверка $ie.busy бесконечного цикла каждую секунду может сработать, но я полагаю, что это не лучший способ сделать это.

Скажем, страница загружается какое-то время (рендеринг долгий из-за гигантских скриптов на стороне клиента). Хотелось бы, сколько времени потребуется, чтобы:

  1. загрузить страницу
  2. сколько времени потребуется для перезагрузки / повторного рендеринга после изменения некоторых данных и нажатия кнопки «Сохранить».

Ответов (3)

Решение

Вы можете проверить дом .busy.

редактировать:

Здесь тоже подойдет статусная собственность. Однако вы можете использовать такой инструмент, как Firebug, чтобы узнать время загрузки страницы.

Если вы все же решите использовать .NET вместо PowerShell, WatiN отлично подходит для этого. Это даст вам большую гибкость по сравнению с элементом управления WebBrowser и намного проще в использовании. Вы также можете управлять Firefox версии 2.

Поскольку у него есть событие, вы можете попробовать библиотеку событий PowerShell . В нем говорится, что он поддерживает события COM, хотя я не пробовал.