点击Selenium中的链接后让Firefox等待加载新页面?

时间:2017-02-21 08:38:05

标签: python selenium selenium-chromedriver selenium-firefoxdriver

我刚刚开始使用Selenium,并使用Chrome编写了一系列测试。然后我尝试用Firefox运行相同的测试,但大多数都失败了。

我有一堆测试有点像这样:

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中,对登录页面进行了正向检查浏览器仍然没有完成重定向到新页面。我得到测试失败的报告,一秒钟之后浏览器呈现预期的页面。)

1 个答案:

答案 0 :(得分: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