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

Posted

技术标签:

【中文标题】如何在 Selenium 中找到具有特定文本的跨度? (使用 Java)【英文标题】:How to locate a span with a specific text in Selenium? (Using Java) 【发布时间】:2016-11-26 19:37:17 【问题描述】:

我无法使用 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 中经常收到“无法定位元素”错误。

【问题讨论】:

【参考方案1】:

您所有的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"))

使用上述任何一个通过定位器,您可以定位元素如下:-

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

希望对您有所帮助...:)

【讨论】:

【参考方案2】:

对于下面的元素

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

以下解决方案适用于我

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

【讨论】:

以上是关于如何在 Selenium 中找到具有特定文本的跨度? (使用 Java)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Selenium 中使用 @FindBy 注释来处理跨度文本?

如何通过 Selenium 和 Python 从 html 标签跨度获取文本

使用 Selenium 和 Robot Framework 遍历 Web 元素

无法使用 selenium python 获取多个跨度类文本

Selenium CSS_Selector 正在寻找具有特定文本的元素,结果是“NoSuchElementException”

Python with Selenium:点击拦截并找到不同的跨度类