【问题标题】:Selenium Go back without refreshingSelenium 不刷新就返回
【发布时间】:2016-07-08 09:22:23
【问题描述】:

我想从一页(比如 B)返回到上一页(比如 A)而不刷新它。我有一个页面 B,如果我手动使用它并手动按退格键,它会在不刷新的情况下返回页面 A,但是当我使用

myElement.send_keys(Keys.BACK_SPACE)

在页面 B 上,它将我重定向到页面 A 并刷新页面。

注意:我在 python 中使用 selenium。

【问题讨论】:

  • 这通常是网页行为。检查原始页面响应的 http 标头。如果您看到Cache-Control: must-revalidate, max-age=0(或其中的一部分)、Pragma: no-cacheExpires: date in the past(甚至这些标头中的多个),则页面将始终重新加载,因为服务器指示浏览器这样做。您可以使用 Fiddler 或类似工具破解它,但通常是故意的(或缺陷 - 视情况而定)。
  • 它写成私有的。但是我仍然理解您的观点,如果这是真的,那么当我手动按键盘上的退格键时,它不会重新加载。为什么会这样?
  • 嗯,确实,你是对的。似乎是硒的行为。作为我的最后一个想法,您可以尝试将applicationCacheEnableddesiredCapability 设置为true,然后再试一次吗? (另外,尝试与question 的答案相反,专门启用所有类型的缓存,可能值得一试)
  • 也没有帮助。任何其他可以在这里提供帮助的脚本语言?

标签: javascript selenium


【解决方案1】:

尝试管理标签,而不是在不刷新页面的情况下在页面之间进行路由。在新选项卡中打开链接 B,然后您无需刷新即可返回第一个选项卡(链接 A)

【讨论】:

    【解决方案2】:

    使用 webdriver 的 back() 方法:

    browser.back()
    

    或者,通过“执行脚本”使用history.back()

    browser.execute_script("history.back();")
    

    【讨论】:

    • 我试过了,但它仍在重新加载上一页。
    • @AkshayBhasin 更新了一个选项,有帮助吗?谢谢。
    • 如果你在使用一些 xyz 网站并且你按下 (backspace) 你会返回而不重新加载页面并且当你按下 (shift+backspace) 时你前进而不刷新第二页是很常见的.我想使用那个功能。
    • @AkshayBhasin 快速检查 - 你能在 Chrome 和 Firefox 中重现它吗?谢谢。
    • 不,我只想在 firefox 上使用它,因为我还需要管理下载,并且在使用 firefox 配置文件时可以做到最好。
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 2014-08-21
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2020-09-29
    相关资源
    最近更新 更多