【问题标题】:SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//img[contains('1236548597')]' is not a valid XPath expressionSyntaxError:无法对“文档”执行“评估”:字符串“//img [包含('1236548597')]'不是有效的XPath表达式
【发布时间】:2019-02-03 18:57:56
【问题描述】:
我收到语法错误:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//img[contains('1236548597')]' is not a valid XPath expression.
我的代码:
enter_chat = driver.find_element_by_xpath("//img[contains('1236548597')]")
enter_chat.click()
【问题讨论】:
标签:
python
python-3.x
selenium
selenium-webdriver
xpath
【解决方案1】:
此错误消息...
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//img[contains('1236548597')]' is not a valid XPath expression.
...暗示您使用的 XPath 不是有效的 XPath 表达式。
在您的代码试验中,contains() 函数的谓词存在问题。
-
contains() 接受两个参数。第一个参数始终是要测试的属性,第二个参数是要查找的值。第一个参数应该是包含 1236548597 值的 属性:
enter_chat = driver.find_element_by_xpath("//img[contains(@<attributeName>,'1236548597')]")
如果没有相关的 HTML,很难构建答案。然而,两种可能的解决方案如下:
-
如果标签是<a>标签,包含img 属性包含值1236548597:
enter_chat = driver.find_element_by_xpath("//a[contains(@img,'1236548597')]")
-
如果标签是<img>标签,包含src 属性包含值1236548597:
enter_chat = driver.find_element_by_xpath("//img[contains(@src,'1236548597')]")
【解决方案2】:
应该是,
enter_chat = driver.find_element_by_xpath("//img[contains(text(),'1236548597')]")
enter_chat.click()
if "//img[contains(text(),'1236548597')]" not work,
try "//img[contains(.,'1236548597')]"
你错过了 text() 函数。