Selenium打印页面元素异常及USB报错问题求助
问题解决方案
一、解决输出WebElement对象而非产品名称的问题
你通过find_elements获取的all_titles是WebElement实例的列表,直接打印会输出对象本身,需要提取元素的文本内容:
- 直接提取元素文本
如果product-info类元素本身包含产品名称文本,遍历列表并调用text属性:
from selenium.webdriver.common.by import By # 获取元素列表 all_titles = driver.find_elements(By.CLASS_NAME, 'product-info') # 提取文本内容 product_names = [title.text.strip() for title in all_titles] # 打印产品名称 print(product_names)
- 定位子元素提取文本
如果产品名称在product-info的子标签内(比如<h3>或<a>),需要先定位到子元素再取文本:
product_names = [] for item in all_titles: # 根据实际页面结构调整子元素定位方式 name_element = item.find_element(By.TAG_NAME, 'h3') product_names.append(name_element.text.strip()) print(product_names)
二、解决USB设备读取描述符错误
这个错误大多和ChromeDriver与浏览器版本不匹配、系统USB设备干扰有关,可按以下步骤解决:
匹配ChromeDriver与浏览器版本
打开Chrome浏览器,在设置→关于Chrome中查看版本号,下载完全对应版本的ChromeDriver,替换当前使用的驱动文件。禁用Chrome的USB设备检测
启动Chrome时添加命令行参数,跳过USB设备扫描:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 禁用USB设备发现 chrome_options.add_argument('--disable-usb-discovery') # 禁用/dev/shm使用,避免部分环境下的资源问题 chrome_options.add_argument('--disable-dev-shm-usage') # 启动浏览器 driver = webdriver.Chrome(options=chrome_options)
- 移除干扰的USB设备
暂时拔掉电脑上不必要的外接USB设备(如U盘、摄像头、外接键盘等),减少系统USB设备扫描的干扰。
内容的提问来源于stack exchange,提问作者ROK-Nweltal
相关产品推荐
相关产品推荐

