1

Мои тесты Robot Framework с Selenium2Library иногда застревают в ожидании страницы браузера, чтобы полностью загрузить ответ сервера, что заставляет тесты время от времени зависать. В большинстве случаев, с которыми я столкнулся, браузер загрузил 99% содержимого и может взаимодействовать с ним просто отлично. Однако автоматизация не будет продолжаться до тех пор, пока загрузка браузера не завершится полностью.Robot Framework Selenium2Library - как остановить страницу браузера, зависающую на ответе сервера

Когда я просматривал тесты автоматизации и сталкивался с этой проблемой виджета браузера, если я вручную нажимаю кнопку браузера «Остановить», браузер перестает загружаться, и тесты автоматизации возобновляются как обычно. Я хотел бы автоматизировать эту остановку браузера в ситуациях, когда браузер зависает, но не замедляет тесты при загрузке браузера, как ожидалось.

Я вижу, что в Python есть команда Selenium Webdriver под названием set_page_load_timeout(), которая выглядит так, как будто это может быть то, что я ищу, если я смогу понять, как ее использовать в Robot Framework.

Другой вариант я смотрел на это выполнение JavaScript, чтобы заставить остановить загрузку браузера, например, так:

***Keywords*** 
Stop browser load 
    Execute Javascript return window.stop(); 

Однако с помощью команды один из приведенных выше, возникает вопрос о том, как реализовать его и узнайте, когда загрузка браузера занимает слишком много времени. Я не хочу устанавливать лишние таймауты для каждого раза, когда загружается новая страница или нажимается ссылка, поскольку это приведет к замедлению общего запуска тестов.

В библиотеке Selenium2Library от Robot Framework есть что-то вроде этого уже встроенного, где вы можете установить фактическое время загрузки страницы ответа сервера, чтобы тесты могли распознать, когда браузер все еще находится в состоянии загрузки? Я рассматриваю Selenium2Library documentation и не нашел ничего, что напрямую связано с этим.

Любая помощь будет принята с благодарностью, спасибо.

ответ

0

Вы можете использовать тайм-аут Robotframework. Вы можете установить тайм-аут в настройках или в ключевом слове.

В Ключевое слово:

*** Keywords *** 
Timed Keyword 
    [Documentation] Set only the timeout value and not the custom message. 
    [Timeout] 1 minute 42 seconds 
    Do Something 
    Do Something Else 


В настройках:

*** Settings *** 
Test Timeout 5 seconds 
+0

Это полезно и частично то, что я ищу, но, к сожалению, кажется, это приведет к ошибке только в случае, если ti mer заканчивается, в то время как я хотел бы иметь возможность обернуть таймер во что-то вроде try, за исключением того, что я могу запустить команду остановки Windows, а затем запустить тестовый пример. – chmcc

+0

Я изучил использование ключевого слова «Встроенная библиотека» «Запустить ключевое слово, если произошло таймаут», несмотря на то, что документация указывает, что он будет работать только с разрывом, и, к сожалению, для моего сценария это ключевое слово не будет работать. Мне придется продолжать искать. – chmcc

+0

yup, это приведет к тому, что наш тест завершится неудачно, если до истечения таймаута тест не завершится ... и когда это произойдет, мы сможем использовать команду «re-runfailed» для повторного запуска неудавшегося теста. Пример здесь: http://laurent.bristiel.com/re-executing-failed-test-cases-and-merging-outputs-with-robot-framework/ Надейтесь, что это поможет вам :) –