Извлечение исходного кода HTML Selenium Remote Control в Internet Explorer - PullRequest
2 голосов
/ 24 сентября 2008

Selenium Remote Control имеет метод "get_html_source", который возвращает источник текущей страницы в виде строки.

AFAIK, этот метод работает во всех случаях в Firefox и Safari. Но когда он вызывается в Internet Explorer, он возвращает неверный источник.

Кто-нибудь знает, является ли это ошибкой в ​​Selenium или Internet Explorer, и есть ли исправление?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2008

Я на 99% уверен, что get_html_source использует свойство браузера innerHTML. InnerHTML возвращает внутреннее представление документа в браузере и всегда было непоследовательным и «шатким» между платформами.

Вы можете проверить это, временно добавив следующий атрибут onload в тег body вашей страницы.

onload="var oArea = document.createElement('textarea');oArea.rows=80;oArea.cols=80;oArea.value = document.getElementsByTagName('html')[0].innerHTML;document.getElementsByTagName('body')[0].appendChild(oArea)"

Это добавит текстовую область внизу вашей страницы с внутренним HTML-документом. Если вы видите тот же «неправильный» HTML-источник, вы знаете, что здесь виноват IE.

Возможные обходные пути - запуск исходного кода через HTML Tidy или какой-либо другой очиститель, если вы используете допустимую разметку. Я не знаю ничего, что обеспечило бы вам последовательный рендеринг между браузерами.

1 голос
/ 26 сентября 2008

спасибо Алан. оказывается, что это была проблема с реализацией в браузере innerHTML в другом браузере.

для тегов, имеющих отношение к спискам, например

, конечные теги необязательны.

браузеры, такие как safari и firefox, используют конечные теги с помощью соответствующих методов innerHTML, но метод innerHTML интернет-проводника игнорирует их.

поскольку списки структурированы, например,

  • яблоко
  • груша

замена регулярного выражения в исходной строке html должна помочь.

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