python - Python-3.x-Selenium:在网站上保持登录状态时更改使用的驱动程序
问题描述
我目前正在使用 python-selenium 测试一个网站,到目前为止它运行良好。我使用webdriver.Firefox()
它是因为如果你能看到测试程序的实际作用,它会使开发过程变得更加容易。但是,测试非常缓慢。在某一时刻,程序必须单击 30 个项目才能将它们添加到列表中,这大约需要 40 秒,因为浏览器的响应速度非常慢。因此,在谷歌搜索如何使 selenium 更快之后,我考虑过使用无头浏览器,例如webdriver.PhantomJS()
.
但是,问题是,该网站需要在开始时包含验证码的登录。现在我在 Firefox 浏览器中手动输入验证码。当切换到无头浏览器时,我不能再这样做了。
所以我的想法是在Firefox中打开网站,登录并手动解决验证码。然后我以某种方式在无头 PhatomJS 中继续会话,这使我可以快速运行代码。所以基本上它是关于改变使用的驱动程序 mid-code。
我知道驱动程序在创建时是完全干净的。因此,如果我在登录 Firefox 后创建一个新驱动程序,我将在另一个驱动程序中注销。所以我想我必须在两个驱动程序之间传输一些会话信息。
这能以某种方式工作吗?如果是,我该怎么做?老实说,我对 webhook、cookie 和存储“登录”信息的实际功能了解不多。那么大家会怎么处理这个问题呢?
期待听到您的回答,托拜厄斯
注意:我已经问过一个类似的问题,它被标记为这个问题的重复。但是,另一个问题讨论了退出脚本后如何重新连接到浏览器。这不是我打算做的。我想在保持登录网站的同时更改使用的驱动程序中间脚本。所以我删除了我的旧问题并创建了这个新的、更合适的问题。我希望它是好的那样。
解决方案
真正的解决方案是让您的开发团队添加一个测试模式(在生产环境中不可用),其中验证码解决方案要么在页面代码的某处提供,要么绕过验证码。
您提出的解决方案听起来不像它会起作用,并且手动步骤会破坏自动化的目的。需要采取手动步骤的自动化将被放弃。
推荐阅读
- c# - 为什么程序不将格里夫纳转换为欧元?
- ms-project - 在 ms 项目中,子项目任务未显示在 sprint 任务板中
- javascript - 在 Wordpress 中使用 Ajax (axios) 创建帖子和上传图片
- github - Azure 静态 Web 应用
- htmx - hx-get 之前的最小字符数?
- angular - 设置模拟服务并使用 jasmine/karma 和 Angular 调用它时出现问题
- java - 基于不同条件和业务规则的Java大对象列表
- linux - 找不到框架“Microsoft.AspNetCore.App”,版本“5.0.0”。当它安装并在 $PATH 中时
- swift - 如何限制选择器视图中显示的行数?
- javascript - WebRTC,getDisplayMedia() 不会从远程流中捕获声音