RPAFramework中Selenium遍历表格行查找td元素报invalid locator错误求助
错误根因
tag: 是 RPA.Browser.Selenium 封装方法专属的定位器前缀,你通过lib.find_elements获取到的tr是原生Selenium的WebElement对象,它自带的find_elements方法不识别这种带前缀的定位格式,因此触发invalid locator报错。
修复方案
有两种可行的修改方式:
方案1:使用RPA.Selenium库的封装方法定位子元素
利用库方法自带的parent参数指定父节点,用相对xpath限定查找范围:
from RPA.Browser.Selenium import Selenium lib = Selenium() lib.open_available_browser("https://ge.globo.com/futebol/brasileirao-serie-a/") lib.wait_until_element_is_visible('xpath://*[@id="classificacao__wrapper"]/article/section[1]/div/table[2]/tbody/tr') trs = lib.find_elements('xpath://*[@id="classificacao__wrapper"]/article/section[1]/div/table[2]/tbody/tr') for tr in trs: # 传入parent参数限定查找范围为当前tr节点下,用相对xpath定位td td = lib.find_elements('xpath:.//td', parent=tr) print(td)
方案2:使用原生WebElement的定位语法
直接调用WebElement自带的定位方法,不需要加定位前缀:
for tr in trs: # 原生方法直接指定定位策略和定位值 td = tr.find_elements('tag name', 'td') # 也可以用更简洁的专属方法:td = tr.find_elements_by_tag_name('td') print(td)
内容的提问来源于stack exchange,提问作者Julian Cassimiro
相关产品推荐
相关产品推荐

