selenium中WebElement.getText()為空解決方法
阿新 • • 發佈:2018-10-04
一個 ima image too inline query star log 能夠
當使用getText()獲取一個普通的鏈接文本時:
Html代碼- <a href="http://www.baidu.com">baidu</a>
如果得到的文本只為空,而非我們期望的baidu.那麽嘗試使用WebElement.isDisplayed()時候,將會得到false的結果.再嘗試使用getAttribute("href"),發現能夠爭取獲取href的值.由此可以說明:
- WebDriver判定isDisplayed為false的元素,那麽getText()將為空
- isDisplayed為false的元素,依然可以通過getAttribute()方法獲取元素的屬性.
{真是很雞肋的一個檢查機制啊}
所以,當getText()為空的時候,可以通過兩種方法獲取鏈接的文本
- 修改頁面當前元素,或者當前元素父元素的CSS,使元素的isDisplayed()值為true.(例如通過((JavascriptExecutor)
// driver).executeScript("document.querySelector(‘cssSelector‘).style.display=\"inline\"");)) - 使用getAttribute("innerHTML")獲取文本值
- 禁用css
由此我們也可以知道,isDisplayed為false,是指那個元素是存在的,只是webdriver認為不見.回到關鍵問題,webdriver是如何判斷一個元素是否displayed,請參照:
http://www.w3.org/TR/webdriver/#determining-visibility
事實上,我所要測試的link,在運行的時候並非隱藏而是可見的,運行中獲取的CSS display值為block而非none.
原文:https://blog.csdn.net/github_38885296/article/details/79006280?
selenium中WebElement.getText()為空解決方法