Selenium - 如何在图像标记后获取文本

时间:2016-04-02 03:54:50

标签: java selenium dom xpath

if(Meteor.isServer) { ... }

我想通过查找元素并使用.getText()来获取文本“givemetext”;抓住你是我已经抓住了一个周围的元素,我正在做这样的事情“

<ul class="meta">
   <li class="user">
       <img class="classname" src="some url">
       givemetext               
   </li>
</ul>

'i'是我已找到的每个元素。我也尝试将/ img添加到xpath但没有找到文本。任何方向都很棒!谢谢。这是java btw(如果你从System.out中看不到;)。

3 个答案:

答案 0 :(得分:1)

该文本可能与img标记关联,因为它遵循img标记。所以可能是这样的:

List<WebElement> user = i.findElements(By.xpath("../ul[@class='meta']/li[@class='user']/img"));
System.out.println("username! " + user.get(0).getText());

我没有在本地试过,但我接下来会尝试。

<强>更新

我在本地工作了以下内容:

WebElement listItem = driver.findElement(By.xpath("/html/body/ul/li"));


String text = "";
if (driver instanceof JavascriptExecutor) {
    text = (String)((JavascriptExecutor) driver).executeScript(
        "var nodes = arguments[0].childNodes;" +
        "var text = '';" +
        "for (var i = 0; i < nodes.length; i++) {" +
        "    if (nodes[i].nodeType == Node.TEXT_NODE) {" +
        "        text += nodes[i].textContent;" +
        "    }" +
        "}" +
        "return text;"
        , listItem);
    }
    System.out.println(text);
}

答案 1 :(得分:0)

如果我做user.get(0).getAttribute(&#34; innerHTML&#34;);

使用img标签返回所有内容,我想这样可行,我只会修剪掉。

答案 2 :(得分:-1)

获取img标签后的文本你可以写下xpath如下:     WebElement ele = findElement(By.xpath(“// ul / li / img [text()='giventext')); System.out.println(“text of element”+ ele.getText());