Selenium> Webdriver:如果在div中有另一个文本,我怎么能得到文本()?

时间:2015-06-24 10:06:24

标签: selenium-webdriver automation

我有这样的HTML:

<div class="dialog-components">
  <h2 class="dialog-title">
    <div class="help-link">
      <a href="http://google.com">Helps</a>
    </div>
    Expected Result
  </h2>

我想得到文字:&#34;预期结果&#34;。但是当我试图:

String text = driver.findElement(By.cssSelector("div.dialog-components>h2")).getText();

文字是&#34; Helps / nExpectedResult&#34;。

我如何才能获得符合我期望的文字? 请帮忙,非常感谢你。

3 个答案:

答案 0 :(得分:1)

可以将字符串拆分为Expected Result,如下所示:

String text = driver.findElement(By.cssSelector("div.dialog-components>h2")).getText();
System.out.println(s.split("\n")[1]);

由于所需文字仅与div相关,而其他文字Expected Result也与您的html相关,因此您无法获得getText() Helps f(x,y) with x = [1 2]; y=[1 2]; 。如果代码有效,请告诉我。

答案 1 :(得分:0)

使用Xpath

String text = driver.findElement(By.xpath("//h2[@class='dialog-title']")).getText();

答案 2 :(得分:0)

要获取“帮助”文本,请使用以下xpath:

String text1 = driver.findElement(By.xpath("//h2[@class='dialog-title']/div[@class='help-link']")).getText();

要获取“预期结果”文本,请使用以下xpath(如Arun所写):

String text2 = driver.findElement(By.xpath("//h2[@class='dialog-title']")).getText();

如果您希望两个文本都在相同的结果中,只需在将结果用于其他地方之前将它们连接起来。

查看有关findElement的更多详情here