如何通过硒从<br/>标记分隔的元素中提取部分文本?

时间:2019-03-16 14:14:02

标签: javascript java selenium xpath css-selectors

如何将 70 70(100%)分开,其中70和(100%)通过硒中的<br>标签链接?

结构如下:

<a href="/report/campaigns/698/sent" class=""> 70<br> (100%)</a>

我正在使用的代码是:

String[] REP=new String[1];
String Repor= driver.findElement(By.xpath("//html[1]/body[1]/section[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/table[1]/tbody[1]/tr[1]/td[6]")).getText();

REP=Repor.split(""); 

System.out.println("REP "+REP[0]);

我得到的输出是:7

3 个答案:

答案 0 :(得分:1)

那个Xpath太疯狂了,但是要解决您的问题,我认为这可能与在split()函数中的引号之间添加空格一样简单。应该是

REP=Repor.split(“ “)

在澄清后进行编辑:正在使用换行符设置字符串Repor。因此,以下代码应分别找到“ 70”和“(100%)”。

String lines[] = Repor.split("\\r?\\n");

lines[0]为“ 70”,而lines[1]为“(100%)”。这就是你想要的吗?

答案 1 :(得分:1)

要提取文本 70 ,您可以使用以下Locator Strategies之一:

  • cssSelector

    WebElement myElement = driver.findElement(By.cssSelector("a[href='/report/campaigns/698/sent']"));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    
  • xpath

    WebElement myElement = driver.findElement(By.xpath("//a[@href='/report/campaigns/698/sent']"));
    String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
    

答案 2 :(得分:0)

每个标签都被视为父标签的现有文本节点的分隔符:决定是指定所需文本节点//a/text()[1]的索引