首页 > 解决方案 > Python-3.x-Selenium:在网站上保持登录状态时更改使用的驱动程序

问题描述

我目前正在使用 python-selenium 测试一个网站,到目前为止它运行良好。我使用webdriver.Firefox()它是因为如果你能看到测试程序的实际作用,它会使开发过程变得更加容易。但是,测试非常缓慢。在某一时刻,程序必须单击 30 个项目才能将它们添加到列表中,这大约需要 40 秒,因为浏览器的响应速度非常慢。因此,在谷歌搜索如何使 selenium 更快之后,我考虑过使用无头浏览器,例如webdriver.PhantomJS().

但是,问题是,该网站需要在开始时包含验证码的登录。现在我在 Firefox 浏览器中手动输入验证码。当切换到无头浏览器时,我不能再这样做了。

所以我的想法是在Firefox中打开网站,登录并手动解决验证码。然后我以某种方式在无头 PhatomJS 中继续会话,这使我可以快速运行代码。所以基本上它是关于改变使用的驱动程序 mid-code

我知道驱动程序在创建时是完全干净的。因此,如果我在登录 Firefox 后创建一个新驱动程序,我将在另一个驱动程序中注销。所以我想我必须在两个驱动程序之间传输一些会话信息。

这能以某种方式工作吗?如果是,我该怎么做?老实说,我对 webhook、cookie 和存储“登录”信息的实际功能了解不多。那么大家会怎么处理这个问题呢?

期待听到您的回答,托拜厄斯

注意:我已经问过一个类似的问题,它被标记为这个问题的重复。但是,另一个问题讨论了退出脚本后如何重新连接到浏览器。这不是我打算做的。我想在保持登录网站的同时更改使用的驱动程序中间脚本。所以我删除了我的旧问题并创建了这个新的、更合适的问题。我希望它是好的那样。

标签: pythonpython-3.xseleniumselenium-webdriverweb-testing

解决方案


真正的解决方案是让您的开发团队添加一个测试模式(在生产环境中不可用),其中验证码解决方案要么在页面代码的某处提供,要么绕过验证码。

您提出的解决方案听起来不像它会起作用,并且手动步骤会破坏自动化的目的。需要采取手动步骤的自动化将被放弃。


推荐阅读