Seleniumbase Driver元素内查找元素报错,求替代实现方法
问题:Seleniumbase Driver查找子元素报错及替代方法
原始代码
Python代码
from seleniumbase import Driver from time import sleep driver = Driver(uc=True) driver.open(URL) element = driver.find_element("li[id^='marketItem']") element_price = element.find_element(".rightCol") print(element_price.text) sleep(999)
问题描述
上述代码在undetected_chromedriver中可正常运行,但使用Seleniumbase Driver时触发错误:
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid locator
原因及解决方法
Seleniumbase的find_element方法对定位符格式要求更严格,直接传入CSS选择器字符串会被识别为无效定位符,可通过以下方式解决:
方法1:显式指定定位策略
导入By类,明确指定CSS选择器的定位策略:
from seleniumbase import Driver from selenium.webdriver.common.by import By from time import sleep driver = Driver(uc=True) driver.open(URL) element = driver.find_element(By.CSS_SELECTOR, "li[id^='marketItem']") element_price = element.find_element(By.CSS_SELECTOR, ".rightCol") print(element_price.text) sleep(999)
方法2:使用带前缀的定位符
Seleniumbase支持在定位符前添加前缀指定策略,用css:标识CSS选择器:
from seleniumbase import Driver from time import sleep driver = Driver(uc=True) driver.open(URL) element = driver.find_element("css:li[id^='marketItem']") element_price = element.find_element("css:.rightCol") print(element_price.text) sleep(999)
方法3:使用Seleniumbase专属API
直接用find_css方法简化CSS选择器定位:
from seleniumbase import Driver from time import sleep driver = Driver(uc=True) driver.open(URL) element = driver.find_css("li[id^='marketItem']") element_price = element.find_css(".rightCol") print(element_price.text) sleep(999)
内容的提问来源于stack exchange,提问作者Dimi140
相关产品推荐
相关产品推荐

