У меня есть тестовый класс с 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)