获取span web元素的Xpath

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取span web元素的Xpath相关的知识,希望对你有一定的参考价值。

我有以下html代码:

enter image description here

我需要引用span元素(树中的最后一个元素)以检查它是否存在。问题是,我找不到合适的XPath,并且无法找到任何有关此特定问题的问题。

我试过了:

"//span[@data-highlighted='true']"

还有更多的连续XPath引用它以前的节点,但实际上无法获得有效的Xpath。对我来说困难在于它没有id或title,所以我试图通过它的“数据突出显示”,但这似乎不起作用。

仅仅为了完整起见:我编写了以下Java方法,该方法用于获取Xpath作为输入:

public Boolean webelementIsPresent (String inputXpath) throws InterruptedException {
return driver.findElements(By.xpath(inputXpath)).size()>0;
}

然后在测试类中,我执行一个assertTrue,webelement存在(该方法返回一个True)或者它没有。

我愿意提供任何帮助,谢谢! :)

答案

你可以逐个文本地获取

driver.findElement(By.xpath("//span[contains(text(), 'Willkommen')]"));

或者找到divid并在此基础上找到span元素。有两种选择:

driver.findElement(By.xpath("//div[@id='description']//span"));

要么

WebElement descriptionDiv = driver.findElement(By.id("description"));
descriptionDiv.findElement(By.tagName("span"));

要么

driver.findElement(By.cssSelector("#description span"));
另一答案

要识别元素"//span[@data-highlighted='true']",您可以使用以下xpath

"//table[@class='GJBYOXIDAQ']/tbody//tr/td/div[@class='GJBYOXIDPL' and @id='descriptionZoom']/table/tbody/tr/td/div[@class='GJBYOXIDIN zoomable highlight' and @id='description']/div[@class='gwt-HTML' and @id='description']//span[@data-highlighted='true']"
另一答案

你的XPath看起来很好,我的猜测是这是一个时间问题,你需要一个简短的等待。也可能是当您捕获HTML时页面处于某种状态,并且当您到达页面时它并不总是处于该状态。

还有其他定位器应该在这里工作。

XPath的

//span[contains(., 'Willkommen')]

CSS选择器(这些可能会或可能不会根据您当前的XPath结果工作)

span[data-highlighted='true']
#description span[data-highlighted='true']

对于你的功能,我建议改变。用String替换By参数以获得更大的灵活性。然后,您可以使用任何方法定位元素,而不仅限于XPath。

public Boolean webElementIsPresent(By locator)
{
    return driver.findElements(locator).size() > 0;
}

或者如果你想添加一个等待,

public Boolean webElementIsPresent(By locator)
{
    try
    {
        new WebDriverWait(driver, 5).until(ExpectedConditions.presenceOfElementLocated(locator));
        return true;
    }
    catch (TimeoutException e)
    {
        return false;
    }
}

以上是关于获取span web元素的Xpath的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 div span 类元素

通过 XPath 仅选择叶 SPAN 元素

某些文本前面的元素的XPath

使用 XPath 获取 HTML 元素的文本内容?

如何单击 Span 元素?

Selenium Xpath元素无法定位 NoSuchElementException: Message: no such element: Unable to locate element(代码片段