运行TikTok爬虫报WebDriver无find_element_by_id属性错误如何修复
报错根因
- 你当前安装的Selenium版本为4.0+,该版本已经完全移除了旧版
find_element_by_*系列定位方法,同时废弃了直接传executable_path参数初始化Chrome驱动的写法,这是警告和报错的直接来源。 - 日志中出现的Bluetooth适配器获取失败提示是Chrome启动时的系统级无关日志,不会影响程序正常运行,无需额外处理。
具体修复方案
1. 修复驱动初始化的弃用警告
首先在代码头部导入Selenium的Service类:
from selenium.webdriver.chrome.service import Service
把原代码第31行的驱动初始化逻辑:
driver = webdriver.Chrome(executable_path=driver_path, options=option)
替换为:
service = Service(executable_path=driver_path) driver = webdriver.Chrome(service=service, options=option)
2. 修复元素定位的AttributeError报错
首先在代码头部导入By定位类:
from selenium.webdriver.common.by import By
把原代码第47行的元素定位逻辑:
url_field = driver.find_element_by_id('url')
替换为:
url_field = driver.find_element(By.ID, 'url')
注意:如果你的代码里还有其他旧版定位写法,需要全部按统一规则替换,旧写法和新写法对应关系如下:
find_element_by_class_name(定位值)→find_element(By.CLASS_NAME, 定位值)find_element_by_xpath(定位值)→find_element(By.XPATH, 定位值)find_element_by_css_selector(定位值)→find_element(By.CSS_SELECTOR, 定位值)find_element_by_name(定位值)→find_element(By.NAME, 定位值)- 批量查找多个元素时,只需把
find_element替换为find_elements,参数规则不变。
改完之后重新运行程序即可解决上述报错和警告。
内容的提问来源于stack exchange,提问作者John Mors
相关产品推荐
相关产品推荐

