【发布时间】:2020-04-03 14:18:57
【问题描述】:
我正在使用 selenium 和 Python 编写一些测试。到目前为止,我的套件与 Chrome 和 Firefox 完美配合。但是,当我尝试使用 Edge (EdgeHTML) 时,相同的代码不起作用。在撰写本文时,我使用的是最新版本,即版本 17134,版本:6.17134。我的测试在 Windows 10 上运行。
问题是 Edge 没有等待页面加载。作为每个测试的一部分,首先执行登录。输入凭据并提交表单。 Firefox 和 Chrome 现在将等待我们被重定向到的页面加载。但是,使用 Edge,只要单击登录提交按钮,就会执行下一个代码,这当然会导致测试失败。
这是 Edge 的错误吗?这似乎有点太根本了。浏览器是否需要以某种方式进行配置?我在文档中看不到任何内容。
这是我们登录时使用最后一条语句运行的代码,导致重定向:
self.driver.find_element_by_id("login-email").send_keys(username)
self.driver.find_element_by_id("login-password").send_keys(password)
self.driver.find_element_by_id("login-messenger").click()
Edge 决定它不需要等待,然后将执行下一个导航到受保护页面的代码。代码是:
send_page = SendPage(driver)
send_page.load_page()
更简洁:
self.driver.find_element_by_id("login-messenger").click()
# should wait now for the login redirect before excuting the line below but it does not!
self.driver.get(BasePage.base_url + self.uri)
我可以通过等待扩展页面上的元素出现来执行解决方法,从而使 Edge 等待。感觉这不是正确的做法。我当然不想只为 Edge 进行侵入性更改。
有什么建议吗?
【问题讨论】:
-
用你的代码试验更新问题。
-
您可以导入时间包并使用time.sleep(secs) method或使用WebDriverWait()等待页面加载。
-
我可以做一个 WebDriverWait() 并在我知道应该加载的页面上寻找一些东西。它不会影响其他浏览器,但我不愿意做我认为不应该做的事情。此问题的目的是查看这是否是已确定的解决方法的已知问题,或者找出我是否做错了什么。
标签: python-3.x selenium automated-tests microsoft-edge