如何在Selenium中找到具有特定文本的跨度? (使用Java)

时间:2016-07-22 19:47:12

标签: java selenium xpath selenium-webdriver

我在使用java在Selenium中找到span元素时遇到了麻烦。

HTML看起来像:

<div class="settings-padding">
<span>Settings</span>
</div>

我尝试了以下但没有运气:

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

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

By.cssSelector("div[class='settings-padding']"))

以及其他一些类似的尝试。你能指点我做最好的方法吗?就目前而言,我经常在eclipse中得到“无法找到元素”错误。

2 个答案:

答案 0 :(得分:14)

您的所有xpath看起来都不错,只有一些syntactically不正确。您在//

中遗漏了xpath

正确的xpath如下: -

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

或者

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

或者

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

或者您可以将cssSelector用作: -

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

使用上述By定位器中的任何一个,您可以找到如下元素: -

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

希望它有帮助...:)

答案 1 :(得分:0)

对于下面的元素

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

以下解决方案对我有用

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