我正在尝试在Selenium
中使用XPath为Python找到一个Web元素。 web元素应包含“Chocolate”文本,但不包括“Dark”。
我尝试过这种语法,但没有让它起作用(请注意parantheses):
choco = driver.find_element_by_xpath("//*[text()[contains(., 'Chocolate')] and not[[contains(., 'Dark')]]]")
以下是使用换行符和串联以获得可读性的相同代码:
choco = driver.find_element_by_xpath((
"//*[text()[contains(., 'Chocolate')]" +
"and not[[contains(., 'Dark')]]]"
))
答案 0 :(得分:4)
请尝试关注XPath
并告知我是否发生错误:
//*[contains(text(), "Chocolate")][not(contains(text(), "Dark"))]
答案 1 :(得分:1)
这是使用一组方括号的语法。
对于包含单词' Chocolate'但不是' Dark',使用:
io.sockets.connected[socketid].emit();
仅对于元素的文本,请使用:
//*[contains(text(), 'Chocolate') and not(contains(text(), 'Dark'))]
给出以下XML:
//text()[contains(., 'Chocolate') and not(contains(., 'Dark'))]
第一个表达式导致:
<doc>
<e>Dark Chocolate</e>
<e>Chocolate</e>
</doc>
第二个表达式导致:
> xpath -e "//*[contains(text(), 'Chocolate') and not(contains(text(), 'Dark'))]" test.xml
<e>Chocolate</e>