保存 Selenium 的当前状态

Save current state of Selenium

提问人:Milano 提问时间:8/3/2015 最后编辑:mtraceurMilano 更新时间:8/20/2023 访问量:2522

问:

是否可以保存Selenium浏览器的当前状态?

为了理解,我将举一个例子:

假设有一个网页。我点击了按钮,在那里我找到了许多其他按钮。我想按顺序检查每个按钮。问题是每个按钮都需要获取浏览器信息,例如引荐来源,这应该是第一次点击后的第一页等。

在这种情况下,我需要将这些信息保存在浏览器中,因为如果我单击第二个按钮,引荐来源将是最近打开的页面。在那之后,我无法立即点击第三个。我必须回去,但有些网页不允许浏览器“回去”。另一个优点是我不必向服务器发送新请求。

像这样的东西:

for but in driver.find_elements_by_class_name('button'):
    state = driver.save_state()
    but.click()
    # do stuff
    driver.load_state(state)
python selenium-web驱动程序

评论

0赞 alecxe 8/3/2015
当您点击列表中的按钮时,URL 是否总是更改?另外,推荐人是唯一导致问题的原因吗?
0赞 Milano 8/3/2015
我认为这个页面非常艰难。它甚至不允许浏览器上的后退按钮(它无法正常工作,您可以使用“后退”,但您不会获得之前步骤的页面)。是的,它会改变,但 URL 根本不足以到达您想要的地方。它是某种动态生成的东西。
1赞 Pynchia 8/3/2015
一个疯狂的想法:尝试复制浏览器对象。在循环中,然后做tmp = copy.deepcopy(driver)but.click()driver = tmp
1赞 Julian 7/12/2018
刚刚做了一个谷歌搜索,听起来反向链接是存储在 http 请求上的标头。如果这是真的,那么这超出了硒的能力范围。但是,您可以做的是将代理连接到驱动程序实例,这样就可以检查浏览器活动中感兴趣的标头,并拦截对浏览器的请求,以便您可以对请求标头进行修改。除非最新版本的 selenium 进行了此更改,否则不允许 webdriver 获得开发人员的原始 http 始终是一个有意的决定。
1赞 SilentGuy 1/16/2020
您是否尝试过打开新选项卡中的所有按钮。并根据需要切换选项卡。

答:

-1赞 Tuanpm 3/13/2020 #1

还有另一种解决方案。Web 浏览器通常使用缓存来保存其状态。因此,您可以在单击每个按钮之前保存缓存,然后重复使用缓存以返回到单击之前的状态。 我已经在我的项目中使用了该解决方案。如果没有将任何内容保存到数据库或其他第三方中,它将完美运行。

评论

0赞 mtraceur 8/20/2023
示例代码或至少指向相关文档/API 的链接将是一个很好的答案。