28

请遵循以下代码部分:

driver.get "https://example.com/"

element = driver.find_element :name => "username"
element.send_keys "*****"
element = driver.find_element :name => "password"
element.send_keys "*****"
element.submit

现在的重点是在driver浏览器上打开 URL 时,有时脚本必须输入用户名和密码的下一页,而不是出现 - 这会导致脚本失败。一些中间页面来了,要求我们点击“重试按钮”或“刷新页面”。因此,只要发生这种情况,脚本就会停止执行,因为没有得到提到的元素。

那么有没有办法在进入“登录”页面之前用“睡眠”刷新中间页面,以便脚本可以一次性运行?

4

7 回答 7

30

对于Capybara,我认为Tommyixi的评论是最好的:

访问 current_path
于 2017-11-15T18:07:22.557 回答
26

正如@Nakilon 在评论中提到的,Capybara 中的非 Poltergeist 驱动程序使用以下内容刷新当前页面:

page.driver.browser.navigate.refresh

但对于通用修复,请使用:

page.evaluate_script 'window.location.reload()'
于 2016-05-11T02:45:14.710 回答
24

您可以使用以下Navigation#refresh方法:

driver.navigate.refresh
于 2013-01-24T19:43:29.843 回答
14

对于水豚,我推荐

page.evaluate_script("window.location.reload()")

这也适用于 poltergeist/phantomjs

于 2016-02-26T12:43:08.940 回答
5

在这种情况下,我编写了一些代码来检查输入字段是否存在。如果不存在,则刷新。

driver.refresh()
于 2013-01-24T19:43:34.167 回答
1

编辑:我原来的答案假设 Capybara 正在被使用。

您可以driver.get再次在页面上使用来刷新。在浏览器中单击刷新按钮和键入相同的 URL 以再次加载页面之间没有区别,因此driver.get对于这种行为来说已经足够了。

于 2013-01-24T19:40:07.453 回答
0

您可以使用 - driver.navigate().refresh();

例如看这里 - http://reditblog.blogspot.in/2014/10/how-to-refresh-current-web-page.html

于 2014-10-31T04:53:02.040 回答