1. 程式人生 > >selenium中WebElement.getText()為空解決方法

selenium中WebElement.getText()為空解決方法

一個 ima image too inline query star log 能夠

當使用getText()獲取一個普通的鏈接文本時:

Html代碼 技術分享圖片
  1. <a href="http://www.baidu.com">baidu</a>

如果得到的文本只為空,而非我們期望的baidu.那麽嘗試使用WebElement.isDisplayed()時候,將會得到false的結果.再嘗試使用getAttribute("href"),發現能夠爭取獲取href的值.由此可以說明:

  1. WebDriver判定isDisplayed為false的元素,那麽getText()將為空
  2. isDisplayed為false的元素,依然可以通過getAttribute()方法獲取元素的屬性.

{真是很雞肋的一個檢查機制啊}

所以,當getText()為空的時候,可以通過兩種方法獲取鏈接的文本

  1. 修改頁面當前元素,或者當前元素父元素的CSS,使元素的isDisplayed()值為true.(例如通過((JavascriptExecutor)
    // driver).executeScript("document.querySelector(‘cssSelector‘).style.display=\"inline\"");))
  2. 使用getAttribute("innerHTML")獲取文本值
  3. 禁用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()為空解決方法