Альтернатива sys.exit (1) для выхода из теста, когда URL-адрес не изменяется при заполнении форм. - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть тестовый класс с Python и Selenium, который имеет методы для заполнения форм.После заполнения одной формы программа нажимает кнопку «Далее», чтобы перейти к следующей форме.Я заметил, что иногда заполняю Chrome Webdriver;одно из полей оставлено пустым.Программа будет ожидать истечения времени ожидания элементов на другой странице, прежде чем завершится, что может занять много времени при запуске комплекта тестов.Итак, я использовал sys.exit (1), когда URL-адрес не изменяется, чтобы выйти из теста, чтобы сервер Bamboo мог интерпретировать состояние выхода.Однако при достаточном количестве тестов иногда я замечаю, что URL-адрес пользовательского интерфейса изменяется, но программа не обнаруживает его и в этот момент завершает работу.Я искал любую рекомендацию, чтобы избежать sys.exit (1) и почему программа закрывает даже изменения URL в пользовательском интерфейсе.

Мне нужен был способ избежать долгого времени тестирования в случае сбоя, поэтому я использовал sys.выход (1).Я попытался использовать ожидаемое состояние библиотеки селена selenium.webdriver.support.

def goto_next_page(driver, _next_btn_id):
"""
This method handles going to next page, if the url changes after clicking  next, continue otherwise exit with 1.
:param driver : web- driver instance
:param _next_btn_id: element id/ xpath of the next button
:return:
"""
    this_url = driver.current_url
    print("url before change {}".format(this_url))
    # call Webdriver wait in the method.      
    wait_until_clickable(driver, 30, _next_btn_id)
    # Click on the next button to go to the next form
    click_button(driver, _next_btn_id)
    # Changed url
    changed_url = driver.current_url
    print(this_url, changed_url)
    # If the url does not change means the next page is not accessible, quit the script
    if this_url == changed_url:
        print("url did not change")
        sys.exit(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...