求助:Undetected Chromedriver调用find_element_by_css_selector报错
错误原因
你碰到的AttributeError: 'Chrome' object has no attribute 'find_element_by_css_selector',是因为新版Selenium(包括undetected_chromedriver适配的版本)已经移除了find_element_by_css_selector这类旧版元素定位方法,必须改用基于By类的新定位语法。另外你的选择器可能有误——Onetrust的同意按钮通常是<button>标签而非<input>,这也会导致元素找不到。
修正后的代码
import time import undetected_chromedriver as uc from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def login_Undetected(): driver = uc.Chrome() driver.get('https://krunker.io/') # 显式等待按钮加载完成,最多等待10秒 accept_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "button[id*=onetrust-accept-btn-handler]")) ) accept_btn.click() time.sleep(2) # 后续操作可在此添加 login_Undetected()
关键改动说明
- 导入
By类和显式等待相关模块,用WebDriverWait替代固定time.sleep,确保元素可点击后再操作,避免因页面加载慢导致的元素未找到问题。 - 将旧的
driver.find_element_by_css_selector()替换为driver.find_element(By.CSS_SELECTOR, 选择器)的新语法。 - 修正选择器标签类型为
button,匹配Onetrust同意按钮的实际标签。
内容的提问来源于stack exchange,提问作者helpimstuck.exe
相关产品推荐
相关产品推荐

