为何该XPath表达式在Python(Selenium)中不是有效表达式?
XPath无效的原因及修正方案
你的XPath表达式//*[contains(@id='pagePane0_divBlock0_')]存在语法错误,问题出在contains()函数的调用方式上:
- XPath的
contains()函数需要传入两个参数:第一个是要检查的属性或节点,第二个是要匹配的子字符串,参数之间必须用逗号分隔,而非等号。 - 你错误地将属性判断逻辑
@id='xxx'直接嵌套进contains()函数中,这不符合XPath的语法规范,导致解析器无法识别该表达式。
修正后的代码
将XPath表达式调整为正确的函数调用格式即可:
ExcelIconXpath = "//*[contains(@id, 'pagePane0_divBlock0_')]" ExcelIcon = driver.find_element(by=By.XPATH, value=ExcelIconXpath)
说明
修正后的表达式会定位所有id属性包含pagePane0_divBlock0_子串的元素,完全匹配你原本的定位需求,也能被Selenium正常解析执行。
内容的提问来源于stack exchange,提问作者Purnendu Nath
相关产品推荐
相关产品推荐

