如何使用Selenium与Python点击See all按钮 代码报错如何排查
故障原因
- 类名定位方法使用错误:
By.CLASS_NAME仅支持传入单个类名,你传入的btn btn-outline-primary px-5包含三个独立类名,会被识别为单个带空格的类名,无法匹配到目标元素,建议改用By.CSS_SELECTOR进行多类名匹配,对应选择器写法为.btn.btn-outline-primary.px-5。 - 变量未定义:你调用
find_element后没有将返回的元素对象赋值给search变量,后续执行点击逻辑时引用search会抛出未定义错误。 - 方法调用错误:Selenium不存在
driver.find()方法,定位表格元素需使用driver.find_element(By.TAG_NAME, 'table')。 - 缺少加载等待逻辑:未设置等待规则时,代码会在页面请求发送后立刻执行定位,大概率出现元素还未渲染完成就执行查找的情况,引发偶发的定位失败问题。
修复后代码
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC nav = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=nav) # 配置最长10秒的显式等待,提前加载完成则提前执行后续逻辑 wait = WebDriverWait(driver, 10) driver.get('https://getdaytrends.com/es/venezuela/#moreTrends') # 改用CSS选择器匹配多类名,同时将元素对象赋值给search变量 search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.btn.btn-outline-primary.px-5'))) driver.execute_script("arguments[0].click();", search) # 使用正确方法定位表格元素 datos = wait.until(EC.presence_of_element_located((By.TAG_NAME, 'table')))
内容的提问来源于stack exchange,提问作者aKratos
相关产品推荐
相关产品推荐

