Перейти к содержимому

Фотография

Отлов ошибок до тэга <HTML>


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Zimina.Svetlana

Zimina.Svetlana

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Зимина Светлана А.

Отправлено 21 сентября 2007 - 09:48

Добрый день всем.
Уже какое-то время пользую Selenium, а сейчас возникла острая потребность в отлове ошибок, которые падают до тэга <HTML>.
А если я правильно понимаю, то Selenium распарсивает web-страничку и способен описать её элементы только внутри <HTML> ... </HTML>.
Может можно "подточить" Selenium под это? Если можно, то как? Если нет, то может ли кто-нибудь посоветовать метод отлова таких ошибок?
  • 0

#2 dlg99

dlg99

    Специалист

  • Members
  • PipPipPipPipPip
  • 609 сообщений
  • ФИО:Andrey Yegorov
  • Город:Redmond, WA

Отправлено 21 сентября 2007 - 14:23

сейчас возникла острая потребность в отлове ошибок, которые падают до тэга <HTML>.


какого рода ошибок? javascript exceptions, html parsing errors, alerts on load ... но это все, вроде, уже после <html>.
насколько я помню, до <html> может идти только <!DOCTYPE .. >, или я не прав?

какой селениум? core? RC?

А если я правильно понимаю, то Selenium распарсивает web-страничку и способен описать её элементы только внутри <HTML> ... </HTML>.


Selenium не занимается парсингом html.
Selenium доступается до всего через javascript/dom/xpath
как результат, он может сделать все, что девелопер может сделать используя javascript/dom, с простым ограничением - ему требуется, чтоб страница была загружена (отсюда проблемы в случае с алертами на загрузке страницы) + (в определённых случаях) browser's scripting security limitations

Может можно "подточить" Selenium под это? Если можно, то как? Если нет, то может ли кто-нибудь посоветовать метод отлова таких ошибок?


может, кусочек хтмл-я постнете и расскажете поподробнее в чем проблема?
а то решений - от 'ничего не сделать' ;) до 'написать extension или специализированный proxy'.
  • 0
Andrey Yegorov. Изображение

#3 Zimina.Svetlana

Zimina.Svetlana

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Зимина Светлана А.

Отправлено 24 сентября 2007 - 04:52

может, кусочек хтмл-я постнете и расскажете поподробнее в чем проблема?
а то решений - от 'ничего не сделать' ;) до 'написать extension или специализированный proxy'.


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

Например:
<br><b>Error:</b> ORA-00907: XXX</br>
<html>
<head>
<title> XXX - YYY</title>
<script type="text/javascript" src="/intranet/js/mtools.js"></script>
...

но желание и необходимость в отлове таких ошибок есть.
возможно ли это?
или посоветуйте плз как лучше поступить с такой ситуацией.
  • 0

#4 dlg99

dlg99

    Специалист

  • Members
  • PipPipPipPipPip
  • 609 сообщений
  • ФИО:Andrey Yegorov
  • Город:Redmond, WA

Отправлено 24 сентября 2007 - 15:20

можно попробовать написать (или модифицировать встроенный в selenium-rc?) proxy, который бы валидировал html.
И при получении невалидного html выдавал бы сообщение об ошибке (replacing original html?), которую селениум уже мог бы легко подхватить. Ну а тестовый фреймворк проверял бы каждую страницу после загрузки на наличие такой ошибки.

да, я такой прокси не писал никогда - не было необходимости. попробуйте проконсультироваться с вашими девелоперами.

как альтернатива, несколько более hacky способ, который, возможно, будет работать только в firefox: если текст сообщения строится по одному достаточно уникальному шаблону, то можно попробовать искать его xpath-ом. что-то типа //b[text() = 'Error:']/parent::*[contains( text(), 'ORA-')] должно найти ваше сообщение.
  • 0
Andrey Yegorov. Изображение

#5 Zimina.Svetlana

Zimina.Svetlana

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Зимина Светлана А.

Отправлено 25 сентября 2007 - 04:06

можно попробовать написать (или модифицировать встроенный в selenium-rc?) proxy, который бы валидировал html.
И при получении невалидного html выдавал бы сообщение об ошибке (replacing original html?), которую селениум уже мог бы легко подхватить. Ну а тестовый фреймворк проверял бы каждую страницу после загрузки на наличие такой ошибки.

да, я такой прокси не писал никогда - не было необходимости. попробуйте проконсультироваться с вашими девелоперами.

как альтернатива, несколько более hacky способ, который, возможно, будет работать только в firefox: если текст сообщения строится по одному достаточно уникальному шаблону, то можно попробовать искать его xpath-ом. что-то типа //b[text() = 'Error:']/parent::*[contains( text(), 'ORA-')] должно найти ваше сообщение.


спасибо, попробую
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных