2

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

Я кучу тестов, которые немного так:

1. Find link 
2. Click link 
3. Confirm the title of the new page matches what I expect 

Это прекрасно работает в Chrome, но в Firefox шаг 3, кажется, выполняется немедленно, до того, как браузер успел загрузить страница. Все тесты проходят, если я добавлю пару секунд, но я бы предпочел избежать этого.

Это проблема конфигурации, или есть лучший способ написать тесты, чтобы помочь с совместимостью?

Это основы теста, который работает в Chrome, но терпит неудачу в Firefox

link = driver.find_element_by_link_text(link_text) 
link.click() 
# Check if `driver.title` contains `title` 
assert title in driver.title 

Вставка time.sleep(2) после щелчка делает его работу.

(Я получаю такую ​​же ошибку с моим тестом на проверку подлинности: заполните форму, нажмите «Отправить», подтвердите, что пользователь перенаправлен на нужную страницу. В Chrome это проходит, в Firefox передняя проверка выполняется на странице входа в систему ., так как браузер до сих пор не закончил перенаправление на новую страницу, я получаю сообщение о том, что тесты не удалось, а второй позже браузер отображает ожидаемую страницу)

ответ

2

Вы можете применить следующие.

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

current_title = driver.title # get current title 
link = driver.find_element_by_link_text(link_text) 
link.click() 
wait(driver, 10).until(lambda driver: driver.title != current_title) # wait for title to be different than current one 
assert title in driver.title 
+0

Спасибо, это сработало. –

+1

Добро пожаловать. Фактически вы можете удалить 'from selenium.webdriver.support import expected_conditions как EC', поскольку я использовал функцию lambda вместо« Ожидаемые условия », поэтому этот импорт был ошибочно добавлен – Andersson

Смежные вопросы