如何使用Selenium WebDriver,Java中的类从<h1>标签获取值

时间:2017-11-27 01:12:46

标签: java selenium webdriver

我有HTML代码:

<div class="formCaptionContainer fill-width" data-dyn-bind="sizing: { width: $dyn.layout.Size.available }">
<h1 class="formCaption" data-dyn-bind="text: $data.Caption, click: $data.GoGridView">Expense report for Aditi Mehta - GS1-000282, testing2</h1>
<h2 class="formCaption-context" data-dyn-bind="text: $data.ParentTitleFields">Aditi Mehta : GS1-000282</h2>
</div>

我想获得Aditi Mehta的价值费用报告 - GS1-000282,来自/ h1标签的testing2

任何人都知道怎么做?

我试过了:

By.xpath(".//div[@class='formCaption']/h1"; 

上面显示没有找到元素

By.className("formCaption");

以上显示空白数据

By.xpath(".//*[@class='formCaption']/h1");

上面显示没有找到元素

7 个答案:

答案 0 :(得分:0)

您需要考虑locator strategy,以下内容为一般案例方法提供了良好的偏好。

  • 按ID全球唯一元素的位置
  • 按名称查找页面唯一元素
  • 通过css定位为catch all case

您还应该查看PageObject pattern

看来该页面正在使用JS库通过后期绑定/解析来显示内容。您的测试需要允许这样做,并等到您感兴趣的页面元素完全呈现。在开发人员解决之前及之后,从开发人员那里了解该元素的外观。延迟解决是确定定位策略的一个考虑因素。该策略应该包括流畅的等待和默认超时元素出现。

这不是修复单个定位器的问题。

答案 1 :(得分:0)

你能试试下面的X路吗?

String msg=driver.findElement(By.xpath("//div[@class='formCaptionContainer fill-width']/h1[@class='formCaption-context']")).getText();

答案 2 :(得分:0)

这段代码对我很有用

       String textprint=driver.findElement(By.xpath("//h2[@class='formCaption-context']")).getText();
        System.out.println(textprint);
  

希望它能解决你的问题

答案 3 :(得分:0)

试试这个

String msg= driver.findElement(By.xpath(//div[contains(@class='formCaptionContainer')]/h1 ).getText();

答案 4 :(得分:0)

根据您共享的HTML,节点属性看起来很动态。所以我们必须按如下方式诱导WebDriverWait

new WebDriverWait(driver, 10).until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//h1[@class='formCaption']"), "Aditi Mehta - GS1-"));
System.out.println(driver.findElement(By.xpath("//h1[@class='formCaption']")).getAttribute("innerHTML"));

答案 5 :(得分:0)

这对我有用:

String titleElem = driver.findElement(By.xpath("//*[@class='formCaptionContainer fill-width']/h1")).getAttribute("innerHTML");
    assertEquals("Worked", titleElem);

答案 6 :(得分:-1)

您需要什么,网页上显示的数据或HTML代码中使用的textValue?

如果您的定位器是正确的,那么您可以尝试getText()而不是getAttibute("innerHTML"),而不是By.xpath("//*[@class='formCaption'][contains(text(),'Aditi Mehta')]").getAttribute("innerHTML");

POST https://somedomain.eu.auth0.com/dbconnections/signup