硒铬驱动程序的getText()方法有时返回空字符串

2022-08-31 20:07:42

我有一个奇怪的情况,其中硒铬驱动程序方法(java)为某些元素返回空字符串,即使它为具有相同元素的其他元素返回非空字符串。这是页面的一部分。getText()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>

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

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

还有其他人遇到过这种困难吗?

在我的代码中,我使用类似这样的东西...

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

如下所述,这是我使用的实际情况。上面的页面代码段处理最后两个 div。xPath

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

答案 1

更新:该属性是一个更好的选择,并且在大多数浏览器中都受支持。这些差异在这篇博客文章中进行了详细解释:innerText与textContent。textContent

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

element.getAttribute("innerText")

当元素没有真正隐藏但在视口之外时,该方法有时会被绊倒; 返回此类元素的空字符串。isDisplayed()getText()

您还可以通过使用javascript滚动到该元素,将该元素带入视口,如下所示:

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

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

有关该方法的详细信息,请参阅此SO问题:isDisplayed()

Selenium WebDriver的isDisplayed()方法如何工作


答案 2

WebElement.getAttribute(“value”) 应该对你有帮助!!


推荐