硒问题尝试使用driver.findElement(By.xpath()从div检索文本

时间:2020-02-28 20:44:21

标签: java html selenium selenium-webdriver

我正在尝试验证页面上的一些内容,并使用带有标题列的网格。我想从中获取文本,这是验证的一部分。由于某种原因,它返回空值,并且我不明白为什么考虑使用包含文本来查找元素。

     String expectedName = "Employee Name";
     String actualName = driver.findElement(By.xpath("//div[contains(text(), 'Employee Name')]")).getText();
     Assert.assertEquals(expectedName, actualName);

我得到的错误是:java.lang.AssertionError: expected [Employee Name] but found []

HTML:

<div class="dx-datagrid-text-content dx-text-content-alignment-left dx-header-filter-indicator" role="presentation">Employee Name</div>

1 个答案:

答案 0 :(得分:-1)

您似乎很亲近。理想情况下,要提取<div>元素的 textContent ,您需要为visibilityOfElementLocated()引入 WebDriverWait ,并且可以使用以下{{3 }}:

  • cssSelector

    String expectedName = "Employee Name";
    String actualName = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.dx-datagrid-text-content.dx-text-content-alignment-left.dx-header-filter-indicator"))).getText();
    Assert.assertEquals(expectedName, actualName);
    
  • xpath

    String expectedName = "Employee Name";
    String actualName = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='dx-datagrid-text-content dx-text-content-alignment-left dx-header-filter-indicator']"))).getText();
    Assert.assertEquals(expectedName, actualName);