使用Selenium Wire启动带远程调试端口的Chromedriver时遇AttributeError
启动带远程调试端口的Chromedriver时Selenium Wire报错:AttributeError: 'Options' object has no attribute 'pop'
问题重现
我需要启动带有远程调试端口的chromedriver,该操作在常规Selenium中可正常执行,但使用Selenium Wire时出现错误:AttributeError: 'Options' object has no attribute 'pop'
完整代码
from seleniumwire import webdriver from seleniumwire.utils import decode import json import time PATH = "/usr/local/bin/chromedriver" chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--remote-debugging-port=9222") chrome_options.add_argument('--user-data-dir=/Users/benfield/Documents/Chrome debug test') driver = webdriver.Chrome(PATH, options=chrome_options,seleniumwire_options=chrome_options)
报错信息
Traceback (most recent call last): File "/Users/benfield/Desktop/betbot/testwire.py", line 12, in <module> driver = webdriver.Chrome(PATH, options=chrome_options,seleniumwire_options=chrome_options) File "/Users/benfield/Library/Python/3.9/lib/python/site-packages/seleniumwire/webdriver.py", line 206, in __init__ config = self._setup_backend(seleniumwire_options) File "/Users/benfield/Library/Python/3.9/lib/python/site-packages/seleniumwire/webdriver.py", line 42, in _setup_backend addr=seleniumwire_options.pop('addr', '127.0.0.1'), AttributeError: 'Options' object has no attribute 'pop'
解决方案
错误原因
seleniumwire_options参数需要接收字典类型的配置项,用于设置Selenium Wire的后端代理等功能,但你把ChromeOptions对象传给了这个参数,而Options对象没有字典的pop方法,因此触发报错。
修正后的代码
如果不需要额外配置Selenium Wire,只需将seleniumwire_options设为空字典即可:
from seleniumwire import webdriver from seleniumwire.utils import decode import json import time PATH = "/usr/local/bin/chromedriver" chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--remote-debugging-port=9222") chrome_options.add_argument('--user-data-dir=/Users/benfield/Documents/Chrome debug test') # 将seleniumwire_options改为空字典,或根据需要添加配置项 driver = webdriver.Chrome(PATH, options=chrome_options, seleniumwire_options={})
可选:添加Selenium Wire配置
如果需要配置Selenium Wire(比如设置代理、修改端口等),可以定义一个字典传入:
seleniumwire_config = { 'addr': '127.0.0.1', 'port': 8080 # 自定义代理端口 } driver = webdriver.Chrome(PATH, options=chrome_options, seleniumwire_options=seleniumwire_config)
内容的提问来源于stack exchange,提问作者henryhamilton
相关产品推荐
相关产品推荐

