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

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

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模式

import os
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文件,运行以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
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 方法,可以用来连接到一个已经运行的浏览器实例:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

service = Service(executable_path='path/to/chromedriver')
chrome_options = Options()
service.start()

# 假设Chrome已经以调试模式启动
driver = webdriver.Chrome(service=service)

# 使用attach_to方法连接到已经打开的浏览器
# 这需要知道Chrome的调试端口和PID
driver.attach_to(port=9222, pid=chrome_pid)  # chrome_pid是Chrome进程的ID

driver.get("http://www.example.com")

注意事项:

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

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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0思必得0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值