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

Фотография

как не ждать загрузку страницы и не падать с ошибкой?


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

#1 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 11 марта 2014 - 14:17

Привет

 

В jsonwiredprotocol есть метод /url, который позволяет перейти по известному адресу.

Для него через "/timeouts" выставляется таймаут на то, сколько мы будем ждать загрузки страницы.

 

Но проблема в том, что если на страничке тупит какой-нибудь малозначительный рисунок, то /url будет ждать загрузки по максимуму, а потом упадёт с ошибкой "Timed out waiting for page load"

 

Никто не придумал ничего лучше, кроме try{}catch{} ?


  • 0

#2 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 11 марта 2014 - 14:22

а чего нужно добиться и на каком инструменте/языке?


  • 0

#3 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 11 марта 2014 - 14:24

Можно просто игнорировать (логировать конечно, но не падать) все эти исключения внутри WebDriver (или своей обёртки вокруг него) и просто пытаться пройти дальше, если тормозящий элемент был незначителен, то тест пройдёт, а если нет, то где-нибудь свалится.


  • 0

#4 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 11 марта 2014 - 14:25

а чего нужно добиться и на каком инструменте/языке?

 

У меня php. Если метод open() (он же /url) всегда будет ждать загрузки страницы, то тупящий рисунок в футере автоматически замедляет тест.

Хочу иметь возможность самому определять то, что страничка загрузилась достаточно хорошо =)


  • 0

#5 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 11 марта 2014 - 14:27

ну, если не ошибаюсь, то можно удалять элемент джаваскриптом


  • 0

#6 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 11 марта 2014 - 14:28

Можно просто игнорировать (логировать конечно, но не падать) все эти исключения внутри WebDriver (или своей обёртки вокруг него) и просто пытаться пройти дальше, если тормозящий элемент был незначителен, то тест пройдёт, а если нет, то где-нибудь свалится.

 

я и говорю, "Никто не придумал ничего лучше, кроме try{}catch{}"

 

ну, если не ошибаюсь, то можно удалять элемент джаваскриптом

 

как жеж я верну управление в поток теста, если страничка не загрузилась?=)

у меня синхронный php.


  • 0

#7 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 11 марта 2014 - 14:36

Самый простой способ перед вызовом open() установить небольшой timeout и после вызова вернуть его на место, но это достаточно кривой костыль для конкретного места когда заранее известно, что по данному URL высока вероятность торможения чего-то неважного.

 

Если серьёзно подойти к проблеме, то надо перегружать open() чем-то вроде open(myJavaScriptCode) где myJavaScriptCode будет сам решать достаточно ли загружена страница для продолжения теста.


  • 0

#8 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 11 марта 2014 - 14:45

ага

есть ещё webdriver.load.strategy , надо туда посмотреть


  • 0

#9 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 11 марта 2014 - 15:25

странные ошибки какие-то лезут.

Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Timed out waiting for page load.
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: host: 'selenium', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-51-generic', java.version: '1.7.0_11'
Driver info: driver.version: unknown
        at <anonymous class>.FirefoxDriver.prototype.get/<(file:///tmp/anonymous5033500997647426723webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:8728)
        at <anonymous class>.WebLoadingListener/e(file:///tmp/anonymous5033500997647426723webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:3333)
        at <anonymous class>.WebLoadingListener/<(file:///tmp/anonymous5033500997647426723webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:3340)
        at <anonymous class>.fxdriver.Timer.prototype.setTimeout/<.notify(file:///tmp/anonymous5033500997647426723webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:396)


  • 0


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

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