Winterflags Winterflags - 9 months ago 42
Python Question

XPath: Find element that contains text X and not Y

I'm attempting to find a web element using XPath in

for Python. The web element should contain the text "Chocolate" but not include "Dark".

I've tried this syntax but not gotten it to work (be mindful of parantheses):

choco = driver.find_element_by_xpath("//*[text()[contains(., 'Chocolate')] and not[[contains(., 'Dark')]]]")

Here is the same code using line breaks and concatenation for readability:

choco = driver.find_element_by_xpath((
"//*[text()[contains(., 'Chocolate')]" +
"and not[[contains(., 'Dark')]]]"


Please try following XPath and let me know if any errors occurs:

//*[contains(text(), "Chocolate")][not(contains(text(), "Dark"))]