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