我有一个奇怪的情况,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
https://postimg.cc/image/gbl2dq4zx/