Элемент управления webBrowser не может найти htmlElement после обновления веб-страницы Ajax или во фрейме - PullRequest
5 голосов
/ 18 марта 2010

Использование элемента управления webBrowser в winForm. но когда веб-страница обновляется с помощью Ajax или во фрейме, я не могу использовать webBrowser1.document.getElementById и т. Д., Чтобы найти это htmlElement. Элемент также не будет отображаться в View->Source code в IE.

Неопределенная цель - найти это htmlElement и смоделировать щелчок или другую функцию, подобную invokeMember("staff").

Ответы [ 2 ]

1 голос
/ 18 марта 2010

Объект Document WebBrowser действительно отображает DOM в реальном времени, поэтому может быть какая-то другая причина, по которой вы не можете его найти. Однако обновления DOM не будут представлены в View -> Source. Вам следует использовать инструменты разработчика IE8, которые покажут вам DOM в реальном времени, и, возможно, вы увидите что-то вроде неправильного / дублированного идентификатора или чего-то подобного.

0 голосов
/ 21 мая 2012

Полагаю, вы уже решили эту проблему самостоятельно, но если нет, обратитесь к моему вопросу здесь: Управление WebBrowser и GetElement по идентификатору

По сути, если вы что-то делаете с элементом управления WebBrowser (т. Е. Добавляете некоторый элемент в DOM), он будет делать это асинхронно. То есть он делает это в другом потоке, таким образом он избегает блокировки вашего вызывающего потока, когда WebBrowser выполняет свою работу. Проблема в том, что если вы программно что-то изменяете с помощью команды, вам придется ждать, пока эта команда фактически завершит загрузку своих изменений, пока вы не сможете работать с результатом.

Проверьте мой вопрос там для примера кода того, что я делал. Я надеюсь, что кто-то найдет мои предыдущие испытания полезными.

...