我有一个奇怪的案例,其中selenium chrome驱动程序getText()
方法(java)为某些元素返回一个空字符串,即使它为其他元素返回一个非空字符串xpath
.这是一个页面.
Text_1Text_2Text_3Text_4Text_5Text_6
每个内标签的,我可以得到有效的返回值getTagName()
,getLocation()
,isEnabled()
,和isDisplayed()
.但是,getText()为某些div返回一个空字符串.
此外,我注意到如果我使用mac chrome驱动程序,它始终是'Text_5',getText()
返回一个空字符串.如果我使用Windows Chrome驱动程序,它始终是'Text_2',getText()
返回一个空字符串.如果我使用firefox驱动程序,则getText()
返回所有div的预期文本.
有没有其他人有这个困难?
在我的代码中,我使用这样的东西......
ArrayListlist = (ArrayList ) 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
Faiz.. 75
更新:该textContent
属性是更好的选项,并且在大多数浏览器中都受支持.在这篇博客文章中详细解释了这些差异:innerText与textContent
作为替代方案,该innerText
属性将返回DOM中存在的元素的文本内容.
element.getAttribute("innerText")
isDisplayed()
当元素没有被隐藏但在视口之外时,该方法有时会跳过; getText()
为这样的元素返回一个空字符串.
您还可以通过使用javascript滚动到视口来将元素带入视口,如下所示:
((JavaScriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
然后getText()
应该返回正确的值.
有关该isDisplayed()
方法的详细信息,请参阅此SO问题:
Selenium WebDriver的isDisplayed()方法如何工作
更新:该textContent
属性是更好的选项,并且在大多数浏览器中都受支持.在这篇博客文章中详细解释了这些差异:innerText与textContent
作为替代方案,该innerText
属性将返回DOM中存在的元素的文本内容.
element.getAttribute("innerText")
isDisplayed()
当元素没有被隐藏但在视口之外时,该方法有时会跳过; getText()
为这样的元素返回一个空字符串.
您还可以通过使用javascript滚动到视口来将元素带入视口,如下所示:
((JavaScriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
然后getText()
应该返回正确的值.
有关该isDisplayed()
方法的详细信息,请参阅此SO问题:
Selenium WebDriver的isDisplayed()方法如何工作
WebElement.getAttribute(“ value”)应该可以帮助您!