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

📅 发布时间:2026/7/2 19:24:27 👁️ 浏览次数:
[Web自动化] Selenium浏览器复用
10.16 Selenium浏览器复用在使用selenium进行自动化测试中我们有时会遇到这样的情况我们需要手动打开浏览器进入到所需的页面执行一些手动任务如输入表单、输入验证码登陆成功后然后再开始运行自动化脚本。这种情况下如何使用selenium来接管先前已打开的浏览器呢这里给出Google Chrome浏览器的解决方案。我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。10.16.1 方法一通过谷歌浏览器的debug模式1、打开cmd在命令行中输入命令并运行以便打开一个用于测试的谷歌浏览器。方式一通过cmd命令的方式启动测试的谷歌浏览器chrome.exe --remote-debugging-port9222 --user-data-dirC:\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(rstart chrome.exe --remote-debugging-port9222 --user-data-dirC:\selenium\AutomationProfile)# 一定要添加start否则会一直卡住方式三通过修改命令参数启动测试的谷歌浏览器新建一个chrome.exe的快捷方式将--remote-debugging-port9222 --user-data-dirC:\selenum\AutomationProfile作为启动参数添加到快捷方式里去。这样就可以通过双击这个谷歌浏览器快捷方式直接打开并进入到debug模式。当然方式三也可以结合到方式二里即将start命令后面的部分(带启动参数的谷歌浏览器)改成chrome.lnk即可。2、此时会打开一个浏览器页面我们输入百度网址我们把它当成一个已存在的浏览器。现在我们需要接管上面的浏览器。新建一个python文件运行以下代码fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions chrome_optionsOptions()chrome_options.add_experimental_option(debuggerAddress,127.0.0.1:9222)chrome_driverC:\Program Files (x86)\Google\Chrome\Application\chromedriver.exedriverwebdriver.Chrome(chrome_driver,chrome_optionschrome_options)print(driver.title)会发现打印出了百度一下你就知道的网页标题。这样我们就实现了对一个已打开的浏览器的控制。更多需求可以自己在此基础上进行修改。10.16.2 方法二使用attach_to方法Selenium 4Selenium 4 引入了attach_to方法可以用来连接到一个已经运行的浏览器实例fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.chrome.optionsimportOptions serviceService(executable_pathpath/to/chromedriver)chrome_optionsOptions()service.start()# 假设Chrome已经以调试模式启动driverwebdriver.Chrome(serviceservice)# 使用attach_to方法连接到已经打开的浏览器# 这需要知道Chrome的调试端口和PIDdriver.attach_to(port9222,pidchrome_pid)# chrome_pid是Chrome进程的IDdriver.get(http://www.example.com)注意事项浏览器复用需要浏览器支持调试协议并且正确配置了调试参数。确保使用的Selenium库版本与浏览器版本兼容。连接到已打开的浏览器实例可能需要额外的权限或配置。在使用attach_to方法时需要知道浏览器的调试端口和进程ID。通过上述方法你可以实现Selenium中的浏览器复用这有助于减少资源消耗并在某些场景下提高测试效率。