Python Selenium如何使用AND运算符多属性匹配定位指定元素
错误原因
你的写法混淆了CSS选择器和XPath的多条件匹配语法,CSS选择器中不需要用and关键字连接多个属性约束,直接连续拼接属性选择器即可匹配同时满足所有条件的元素。
正确实现方式
方法1:使用CSS选择器(推荐)
多个属性选择器直接连写即可实现同时匹配多个属性条件:
# Selenium 3.x 旧版写法 element = driver.find_element_by_css_selector('button[info="content1"][aria-label="2"]') # Selenium 4.x+ 官方推荐写法,需提前导入依赖 from selenium.webdriver.common.by import By element = driver.find_element(By.CSS_SELECTOR, 'button[info="content1"][aria-label="2"]')
方法2:使用XPath选择器(备选)
XPath语法中支持用and关键字连接多个匹配条件,写法如下:
from selenium.webdriver.common.by import By element = driver.find_element(By.XPATH, '//button[@info="content1" and @aria-label="2"]')
可选优化(解决加载延迟问题)
如果存在元素异步加载的场景,可以搭配显式等待避免找不到元素的问题:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最多等待10秒直到元素出现 wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'button[info="content1"][aria-label="2"]')))
内容的提问来源于stack exchange,提问作者Apantazo
相关产品推荐
相关产品推荐

