получение исходного кода из Firefox с помощью javascript

#javascript #selenium

#javascript #селен

Вопрос:

Я пишу программу для проверки веб-страниц на удаленном сервере. Для запуска Firefox с набором тестов используется selenium RC, поэтому я могу вызывать произвольный javascript. При сбое я хотел бы зарегистрировать сгенерированный HTML-код страницы. Теперь получить доступ к DOM HTML легко, но у меня возникают реальные проблемы с поиском способа добраться до исходного кода. Спасибо.

Я должен повторить, что я ищу не DOM, а оригинальный неизмененный исходный код. Как можно видеть, щелкнув правой кнопкой мыши -> просмотреть исходный код страницы. В частности, если <Html>
<body>
<table>
<tr>
<td>
fear the table data
</td>
</table>

это настоящий HTML. Вызовы document.documentElement.outerHTML || document.documentElement.innerHTML и selenium.getHTMLSource() приведут к <head> </head><body> <table> <tbody><tr> <td> fear the table data </td> </tr></tbody></table> </body>

Комментарии:

1. В настоящее время я делаю это с помощью дополнительного запроса с использованием библиотеки http, поэтому каждая страница фактически извлекается дважды: с selenium и без. Также я часто замечаю, что просмотр исходного кода страницы в Firefox происходит с некоторой задержкой, очевидно, браузер делает то же самое под капотом.

Ответ №1:

XHR запрашивает ту же страницу для исходного кода и просто проверяет document.documentElement.outerHTML || document.documentElement.innerHTML источник текущего состояния.

Комментарии:

1. Однако. Я ищу исходный неизмененный HTML-код.

2. Я сказал: «XHR запросите ту же страницу для источника».

3. Возможно, я (что более вероятно) что-то упускаю, но если страница динамическая, она не обязательно перезагрузит тот же html, который вызвал ошибку.

4. Тогда вам понадобится источник текущего времени, который я также рассказал вам, как получить.

5. Спасибо за ваше терпение. Просто, когда я выполняю этот вызов в плохо отформатированном примере html, который я отредактировал в своем вопросе, я получаю обратно firefox DOM. Например, вставленный <head> </head>, <tbody> …</tbody> и закрывающий </body> . Это было бы проблематично для правильного протоколирования причины ошибок. Что вы делаете, что этого не делает?

Ответ №2:

Вы пробовали что-нибудь такое простое, как

 document.documentElement.innerHTML;
  

Комментарии:

1. это возвращает DOM, по крайней мере, в Firefox.

Ответ №3:

Поскольку вы также используете selenium, вы можете использовать selenium.getHTMLSource() . Это вернет все содержимое исходной страницы.

Комментарии:

1. Это то, что я предполагал перед тестированием. Вызов фактически получает html-версию DOM, вероятно, через document.documentElement.innerHTML; вызов.