Selenium Chrome 调试

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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调试方法和技巧 #### 使用日志记录增强可见性 为了更好地理解Selenium执行过程中发生了什么,可以启用详细的日志记录。这有助于捕获任何潜在的问题并提供解决问题所需的上下文信息[^1]。 ```python from selenium import webdriver import logging logging.basicConfig(level=logging.INFO) options = webdriver.ChromeOptions() driver = webdriver.Chrome(options=options) logger = logging.getLogger(__name__) try: driver.get('http://example.com') logger.info(f'Navigated to {driver.current_url}') finally: driver.quit() ``` #### 设置断点进行逐步调试 当遇到难以捉摸的错误时,在代码的关键位置设置断点可以让开发者暂停程序运行,检查当前状态下的变量值和其他环境因素。大多数IDE都支持这种功能,允许用户单步执行语句直到找到问题所在[^2]。 #### 利用截图保存页面快照 如果测试失败发生在特定条件下或仅偶尔重现,则可以通过让WebDriver定期截取屏幕图像来收集更多线索。这些图片能够展示出错瞬间的实际界面情况,便于后续分析原因[^3]。 ```python def take_screenshot(driver, filename='screenshot.png'): try: driver.save_screenshot(filename) print(f'Saved screenshot as "{filename}"') except Exception as e: print(f'Failed to save screenshot: {e}') take_screenshot(driver) ``` #### 实施等待策略优化元素查找 有时网页加载速度较慢可能导致某些DOM节点尚未准备好就被尝试访问而引发异常。通过引入显式等待机制代替固定的休眠时间间隔,可以使脚本更加灵活可靠地处理动态变化的内容结构[^4]。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'myDynamicElement')) ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值