如果在它们之间存在img标记,则在span中拆分文本 - selenium - java

时间:2018-05-04 23:59:04

标签: java selenium xpath

我有一个场景,在span标签内我有两个字符串,由img标签分隔。

<span>
    text
    <img/>
    text
</span>

当我尝试使用selenium和Xpath找到此跨度时,我找到了它 - 但是span元素的getText()方法返回"texttext"。我的目的是获得"text text"

driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN").getText();

我的Xpath很好(因为我得到了正确的网页元素,但是我怎么能得到我在这里注意到的字符串?我想在有img标签时附加一个空格。

很高兴为您提供帮助,

谢谢!

2 个答案:

答案 0 :(得分:1)

使用.getText()没有直接的方法。您可以使用.getAttribute("innerHTML"),然后您需要用空格替换两个“文本”字符串(IMG等)之间的任何内容。

这是一个基于HTML的简单示例,可能会有效。

String s = driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN").getAttribute("innerHTML"); // <span>text<img/>text</span>
s = s.replaceAll("<img.*?/>", " ");
System.out.println(s);

打印

<span>text text</span>

答案 1 :(得分:1)

要从第一个子节点检索文本文本,从第三个子节点检索文本文本,您可以使用 getAttribute("innerHTML") 方法,然后使用split()方法,最后打印文本文本,在它们之间插入一个空格,如下所示:

String my_string = driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN")).getAttribute("innerHTML");
String[] stringParts = my_string.split("\n");
String partA = stringParts[0];
String partB = stringParts[2];
System.out.println(partA + " " + partB);