How to locate a span with a specific text in Selenium? (Using Java)

Your all xpath are looks OK, Just some syntactically incorrect. you are missing // in your xpath

The correct xpath are as below :-

By by = By.xpath("//span[.='Settings']")

Or

By by = By.xpath("//span[text()='Settings']")

Or

By by = By.xpath("//div[@class='settings-padding']/span"))

Or you can use cssSelector as :-

By by = By.cssSelector("div.settings-padding > span"))

Using anyone of the above By locator you can locate element as below :-

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(presenceOfElementLocated(by));

Hope it helps...:)


For the element below

<span class="test-button__text">
    Test Text
</span>

The following solution works for me

driver.find_element_by_xpath("//span[contains(@class, 'test-button__text') and text()='Test Text']")