当前位置: 首页 > news >正文

[Web自动化] Selenium浏览器复用

10.16 Selenium浏览器复用

在使用selenium进行自动化测试中我们有时会遇到这样的情况:
我们需要手动打开浏览器,进入到所需的页面,执行一些手动任务,如输入表单、输入验证码,登陆成功后,然后再开始运行自动化脚本。
这种情况下如何使用selenium来接管先前已打开的浏览器呢?这里给出Google Chrome浏览器的解决方案。我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。

10.16.1 方法一:通过谷歌浏览器的debug模式

1、打开cmd,在命令行中输入命令并运行以便打开一个用于测试的谷歌浏览器。
方式一:通过cmd命令的方式启动测试的谷歌浏览器

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

说明:

-remote-debugging-port:指定一个未被其它程序占用的端口。
-user-data-dir:指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
进入cmd,使用命令:telnet 127.0.0.1 9222,如果能telnet通,则意味着python程序可以接管了
在环境变量中PATH里将chrome的路径添加进去。

方法二:通过Python脚本来打开谷歌浏览器的debug模式

importos os.system(r'start chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenium\AutomationProfile"')# 一定要添加start,否则会一直卡住

方式三:通过修改命令参数启动测试的谷歌浏览器
新建一个chrome.exe的快捷方式,将--remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"作为启动参数添加到快捷方式里去。这样就可以通过双击这个谷歌浏览器快捷方式直接打开并进入到debug模式。
当然,方式三也可以结合到方式二里,即,将start命令后面的部分(带启动参数的谷歌浏览器)改成chrome.lnk即可。
2、此时会打开一个浏览器页面,我们输入百度网址,我们把它当成一个已存在的浏览器。现在,我们需要接管上面的浏览器。新建一个python文件,运行以下代码:

fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions chrome_options=Options()chrome_options.add_experimental_option("debuggerAddress","127.0.0.1:9222")chrome_driver="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"driver=webdriver.Chrome(chrome_driver,chrome_options=chrome_options)print(driver.title)

会发现打印出了百度一下,你就知道的网页标题。这样我们就实现了对一个已打开的浏览器的控制。更多需求可以自己在此基础上进行修改。

10.16.2 方法二:使用attach_to方法(Selenium 4+)

Selenium 4 引入了attach_to方法,可以用来连接到一个已经运行的浏览器实例:

fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.chrome.optionsimportOptions service=Service(executable_path='path/to/chromedriver')chrome_options=Options()service.start()# 假设Chrome已经以调试模式启动driver=webdriver.Chrome(service=service)# 使用attach_to方法连接到已经打开的浏览器# 这需要知道Chrome的调试端口和PIDdriver.attach_to(port=9222,pid=chrome_pid)# chrome_pid是Chrome进程的IDdriver.get("http://www.example.com")

注意事项:

  • 浏览器复用需要浏览器支持调试协议,并且正确配置了调试参数。
  • 确保使用的Selenium库版本与浏览器版本兼容。
  • 连接到已打开的浏览器实例可能需要额外的权限或配置。
  • 在使用attach_to方法时,需要知道浏览器的调试端口和进程ID。

通过上述方法,你可以实现Selenium中的浏览器复用,这有助于减少资源消耗,并在某些场景下提高测试效率。

http://www.jsqmd.com/news/377596/

相关文章:

  • 【计算机基础】-52-RT-Thread- typedef struct xxx *xxx_t 为啥要这样的定义,好处是啥?
  • 【Python毕设全套源码+文档】基于python的商场停车管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 2026年陕西轻质隔墙板厂家哪家好?适配各类建筑场景需求 多方面差异具体解析 - 深度智识库
  • 极致压缩:Whisper.cpp 量化版本清单与 ggml 格式模型下载 - 教程
  • AI多因子模型预警:金价跌破5000关键阈值,市场聚焦CPI数据驱动的定价
  • setupldr源代码分析加载drvmain.sdb和查询winnt.sif中的data节的EMSPort的值和显示蓝底白字Windows Setup
  • 施耐德UPS主机SURT1000XLI-CH
  • 处理样式资源
  • 联想平板有线投屏必看!教你轻松切换声音输出设备
  • GB/T 11981-2024 建筑用轻钢龙骨检测
  • AtCoder Beginner Contest竞赛题解 | AtCoder Beginner Contest 424
  • 2026年停经架厂商推荐,停经架生产企业哪家好 - 工业品牌热点
  • 低成本实现远程开机!家用网络唤醒(WOL)超详细部署教程
  • postgresql 内置函数有那些
  • 如何快速处理苹果充值卡?教你轻松回收变现的技巧! - 团团收购物卡回收
  • 服务器运维(三十六)日志分析nginx日志工具—东方仙盟
  • 2026年深圳管道疏通服务评测与排名:应对突发堵塞与日常维护的实用指南 - 十大品牌推荐
  • web前端调用go后端api
  • 链式求导的本质是什么?
  • 剖析精品咖啡培训学校推荐,青岛欧米奇专业优势全解读 - 工业设备
  • 2026年上海可靠的婚纱摄影公司有哪些,知名品牌推荐 - 工业品网
  • 2026年深圳海鸥手表维修评测与排名:非官方维修点选择指南与售后网点服务解析 - 十大品牌推荐
  • 【开题答辩全过程】以 基于Python淘宝电脑销售数据可视化系为例,包含答辩的问题和答案 - 教程
  • vector的扩容
  • 2026年浙江二级冷板专业供应商,带你解读好用品牌的奥秘 - mypinpai
  • 2026年深圳海鸥手表维修评测推荐:非官方维修网点服务榜单与避坑指南 - 十大品牌推荐
  • 基于MATLAB的语音信号处理与去噪全流程实现
  • 大型项目协作如何选型?2026年项目管理系统推荐与评价,解决扩展性与可视化痛点 - 十大品牌推荐
  • 2026年入坑程序员请注意:千万别碰这几个即将被计算机行业淘汰的编程语言!Java/python/golang/C/C++/C#/开发/测试运维/后端/码士集团(2)
  • 2026年深圳古驰手表维修推荐评测:非官方维修点选择指南与全国服务网点推荐 - 十大品牌推荐