找到了element, 但是用getText却得到空值,取不到文本的解决办法
最近代码中发现一些bug, 在Debug过程中发现,页面元素是被定位到了,但是用getText方法取到的却是空值。调查了一下发现,getText是否返回值和isDisplayed是否为true有关。当element.isDisplayed返回false的时候,get.Text就会返回空。
但是明明页面的text是正常显示的,为什么element.isDisplayed为空呢?
这是因为当元素不是真正隐藏而是在viewport之外时,isDisplayed()方法有时可能会跳越, 从而导致 getText()返回此类元素的空字符串。
解决办法:
1. element.getAttribute(“innerText”)
2.element.getAttribute(“textContent”)
3. ((JavaScriptExecutor)driver).excuteScript(“arguments[0].scrollIntoView(true);”, element)
textContent属性是一个更好的选择,并且在大多数浏览器中都受支持
如果使用innerText要依据element的具体内容来改变,例如如果想得到一个链接对应的文本,则应该用innerHTML.
在实际页面布局中,innerText 和 textContent请参照: innerText vs. textContent
更多webdDriver: https://www.w3.org/TR/webdriver/