【问题标题】:How to extract partial text from an element seperated by <br> tag through selenium?如何通过硒从由<br>标签分隔的元素中提取部分文本?
【发布时间】:2019-08-07 10:14:06
【问题描述】:

如何将 7070 (100%) 分开,其中 70 和 (100%) 由 selenium 中的 &lt;br&gt; 标签链接?

结构如下:

<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

【问题讨论】:

  • 嗨!当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个工具栏,里面装满了格式化辅助工具。还有一个 [?] 按钮提供格式化帮助。 一个预览区域,显示您的帖子在发布时的样子,位于文本区域和“发布您的问题”按钮之间(这样您就必须滚动过去才能找到该按钮,以鼓励你去看看)。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
  • dhilmathy 这次打败了我为您修复它。请下次使用这些工具。谢谢!
  • 如果您没有看到您尝试从中获取此信息的 HTML/DOM 结构,我们将无法为您提供帮助。
  • 请使用“编辑”链接而不是 cmets 来改进问题。

标签: javascript java selenium xpath css-selectors


【解决方案1】:

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

REP=Repor.split(“ “)

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

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

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

【讨论】:

  • 已经试过了。没用。它打印整个东西。
  • 如果您在字符串 Repor 之后调试或添加打印行,会产生什么结果?
  • 打印同样的东西。我在“for循环”中使用它并从表列中获取值。
  • 什么,你的意思是包括 br 或只是“70 %100”?
  • 70 (100%) 这是两种情况的输出。 (100%) 在下一行
【解决方案2】:

要提取文本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();
    

【讨论】:

  • 尝试了 xpath 定位器策略,但输出为 70 (100%)。一站式服务
  • 得到了所需的结果。在您建议的代码之后使用子字符串方法。非常感谢。 :)
  • @Ashu 不确定你到底卡在哪里,但如果你使用了我的代码,你肯定不需要substring
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多