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

Posted

技术标签:

【中文标题】硒问题尝试使用 driver.findElement(By.xpath() 从 div 检索文本【英文标题】:selenium issue trying to retrieve text from a div using driver.findElement(By.xpath() 【发布时间】:2020-06-12 23:41:22 【问题描述】:

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

     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】:

你似乎很亲密。要理想地提取&lt;div&gt; 元素的textContent,您需要为visibilityOfElementLocated() 诱导WebDriverWait,您可以使用以下Locator Strategies 之一:

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);

【讨论】:

这似乎不是一个好的解决方案,因为无需等待元素可见。如果元素不可见,String actualName = driver.findElement(By.xpath("//div[contains(text(), 'Employee Name')]")).getText(); 会抛出错误,不是吗? 嗯,您正在通过它的文本 Employee Name 找到一个元素,然后您正在使用 getText() 提取相同的文本 Employee Name?你能告诉我们更多关于你的用例吗? “用例”是什么意思?这是一个健全性检查,以确保屏幕按应有的方式加载并填充数据。我想我会首先确认一些列标题是可见的,然后检查预期的数据。那是你要找的吗?我不在乎如何找到元素,包含文本似乎是最干净的方式。

以上是关于硒问题尝试使用 driver.findElement(By.xpath() 从 div 检索文本的主要内容,如果未能解决你的问题,请参考以下文章

java selenium没有出现错误,元素没有被点击

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

尝试运行脚本时如何解决mac上的硒问题

不能使用带有硒的镀铬按钮

如何使用硒下载文件?

在 Chrome 中使用硒线更改用户代理