当前位置: 首页 > 面试题库 >

Selenium Chrome驱动程序的getText()方法有时会返回一个空字符串

冯亮
2023-03-14
问题内容

我有一个奇怪的情况,seleniumchrome驱动程序getText()方法(java)为某些元素返回一个空字符串,即使它为具有相同元素的其他元素返回了一个非空字符串xpath。这是页面的一部分。

<div __gwt_cell="cell-gwt-uid-223" style="outline-style:none;">
<div>Text_1</div>
<div>Text_2</div>
<div>Text_3</div>
<div>Text_4</div>
<div>Text_5</div>
<div>Text_6</div>
</div>

每个内标签的,我可以得到有效的返回值getTagName()getLocation()isEnabled(),和isDisplayed()。但是,getText()对于某些div返回空字符串。

此外,我注意到,如果使用mac chrome驱动程序,则始终是’Text_5’,其getText()将返回一个空字符串。如果使用Windows
chrome驱动程序,则为,它始终是“
Text_2”,其getText()返回一个空字符串。如果我使用firefox驱动程序,getText()则从所有div返回期望的文本。

还有其他人有这个困难吗?

在我的代码中,我使用了类似的内容…

ArrayList<WebElement> list = (ArrayList<WebElement>) driver.findElements(By.xpath(“my xPath here”));
for (WebElement e: list) System.out.println(e.getText());

如下所示,这是xPath我正在使用的实际值。上面的页面摘要涉及最后两个div。

//*[@class='gwt-DialogBox']//tr[contains(@class,'data-grid-table-row')]//td[contains(@class,'lms-assignment-selection-wizard-cell')]/div/div

问题答案:

更新:
textContent属性是一个更好的选择,并且在大多数浏览器中都受支持。差异将在此博客文章中详细说明:innerText与textContent

作为替代,该innerText属性将返回DOM中存在的元素的文本内容。

element.getAttribute("innerText")

isDisplayed()当元素不是真正隐藏而是在视口之外时,该方法有时可能会跳过;getText()返回此类元素的空字符串。

您还可以使用javascript滚动到视口,将其带入视口,如下所示:

((JavaScriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);

然后getText()应返回正确的值。



 类似资料:
  • 我正试图从我的java类中打开Google网站来测试Selenium。 启动端口36521上的ChromeDriver 75.0.3770.90(A6DCAF7E3EC6F70A194CC25E8149475C6590E025-Refs/Branch-Heads/3770@{#1003})。只允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 线程“mai

  • 在使用执行搜索后,我从Chrome网络驱动程序中得到这个: 这就是规格要求吗? 我这么问是因为我找不到任何地方用大写字母清楚地写着“元素”。我能在规范中找到的就是设置了一个名为的键(它是:它被设置为 > 我是否总能从其他浏览器的Web驱动程序中得到这种响应?也就是说,和是否总是返回? 这是铬构成对象的方式吗?或者这是真实的任何网络驱动程序?当然不是,其他的web驱动程序返回什么?

  • 问题内容: 我有一个带有3个嵌套数组的简单php结构。 我不使用特定的对象,而是使用2个嵌套循环构建数组。 这是我要转换为Json的数组的var_dump的示例。 在另一个脚本中,我具有类似的结构并且工作正常。所以我不明白为什么在这里不起作用。 编辑:似乎有编码问题。当返回ASCII,该作品但当它返回UTF8,它不工作了。 Edit2:返回表示:格式错误的UTF-8字符,可能编码不正确。 问题答案

  • 问题内容: 这可能是最简单的事情之一,但我看不到自己在做错什么。 我的输入包括一个带有数字的第一行(要读取的行数),一串包含数据的行和最后一行仅包含\ n的行。我应该处理此输入,并在最后一行之后做一些工作。 我有这个输入: 对于读取输入,我有以下代码。 我的问题是为什么我什么都不打印?程序读取第一行,然后不执行任何操作。 问题答案: 不读取以下换行符,因此第一个(返回 当前 行的其余部分 )将始终

  • 我使用python脚本,它传递给卡桑德拉批处理查询,如下所示: 这是一段时间的工作,但在启动脚本失败并打印后约2分钟内: 我将超时从 更改为: read_request_timeout_in_ms:15000 range_request_timeout_in_ms:20000 write_request_timeout_in_ms:20000 cas_contention_timeout_in_m