Selenium Chrome 调试

本文介绍了如何通过开启Chrome的远程调试功能,结合Selenium在已打开的浏览器实例上运行自动化测试用例,从而避免重复的前置步骤,提高调试效率。当升级Chrome或ChromeDriver导致问题时,只需删除指定目录下的文件即可解决。

Selenium编写用例的时候,需要不断的运行调试debug,但正常情况会每次重新打开一个Chrome运行,如果你的系统需要登陆,或者你正在调试的用例需要很长的前置步骤,都重新来一遍非常浪费时间。有没有办法可以让Selenium直接在已打开的浏览器上继续运行呢?有的:

首先使用命令打开Chrome浏览器并开启远程调试功能,打开CMD,输入

chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenium_ui_auto\chrome_temp"

 

如图,浏览器已打开了,我们输入百度地址打开百度首页,然后运行以下代码:

复制代码

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 = r"D:\code\python\selenium_ui_auto\driver\chromedriver.exe"
#driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
 driver = webdriver.Chrome(chrome_options=chrome_options)
driver.find_element_by_id('kw').send_keys(u'测试工程师小站')

复制代码

可以看到,已打开的浏览器,原来在搜狗新闻页,但调试的用例假如是百度页,我手动输入百度后,运行代码,被输入了关键字'测试工程师小站',并显示了搜索结果。这样,以后调试的时候,就可以手动运行前置步骤,再运行代码了。

问题,如果升级chrome 或者chromedriver后,调试的时候没反应,要删掉D:\selenium_ui_auto\chrome_temp的文件夹及所有文件

### 如何使用 Selenium 启动 Chrome 浏览器 #### 方法一:常规启动方式 对于大多数应用场景而言,可以直接通过设置 `webdriver.Chrome` 来启动一个新的 Chrome 实例。 ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) driver.get('http://www.example.com') ``` 这段代码会自动下载并安装适合当前系统的 ChromeDriver 版本,并创建一个新的浏览器实例[^2]。 #### 方法二:连接到已有浏览器实例 如果希望减少频繁开启关闭浏览器带来的性能损耗,可以选择先单独运行 Chrome 浏览器再让 Selenium 连接上去。这通常涉及到命令行参数的配置以及特定端口监听等操作。 ```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") # 假设本地有这样一个调试地址正在等待连接 driver = webdriver.Chrome(options=chrome_options) print(driver.title) # 输出页面标题验证是否成功连接上现有浏览器 ``` 这里的关键在于设置了 `"debuggerAddress"` 参数指向了一个已经存在的远程调试接口位置[^1]。 #### 方法三:加载自定义用户资料库 有时可能想要保持登录状态或者其他个性化设定不变的情况下重复利用同一个浏览器环境,则可以考虑引入用户的个人数据目录作为附加选项传递给 WebDriver 构造函数。 ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() user_data_dir = r"C:\Path\To\UserDataDir" chrome_options.add_argument(f'--user-data-dir={user_data_dir}') driver = webdriver.Chrome(chrome_options=chrome_options) ``` 上述做法允许脚本继承之前保存下来的浏览历史、书签栏以及其他偏好设置等内容[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值