selenium 獲取不了標簽文本的解決方法


selenium 獲取不了標簽文本的解決方法 ------ 即driver.find_element_by_xxx().text() 為空的解決辦法

如果得到的文本只為空,而非我們期望的baidu,那么當前定位的元素可能被隱藏了。

1.判斷是否被隱藏 。 driver.find_element_by_xx().is_displayed()  

  打印結果,如果得到 false的結果.那就說明被隱藏了

2.怎么解決?

      方法一:   修改頁面當前定位元素,或者當前元素父元素的CSS,使元素的is_displayed()  值為true.

      方法二:  is_displayed()  為false的元素,依然可以通過getAttribute()方法獲取元素的屬性. 

     由於webdriver spec的定義,Selenium WebDriver 只會與可見元素交互,所以獲取隱藏元素的文本總是會返回空字符串。 
    可是,在某些情況下,我們需要獲取隱藏元素的文本。這些內容可以使用element.attribute('attributeName'), 通過textContentinnerTextinnerHTML等屬性獲 取(划重點)

    • innerHTML 會返回元素的內部 HTML, 包含所有的HTML標簽。 
      例如,<div>Hello <p>World!</p></div>innerHTML會得到Hello <p>World!</p>
    • textContent 和 innerText 只會得到文本內容,而不會包含 HTML 標簽。 
      • textContent 是 W3C 兼容的文字內容屬性,但是 IE 不支持
      • innerText 不是 W3C DOM 的指定內容,FireFox不支持

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------     

例如:定位126發送郵件成功時定位“發送成功”文本

      

 text= driver.find_element_by_class_name('tK1')      # 定位

print(ss.get_attribute("innerHTML")) # 用innerHTML 會返回元素的內部 HTML, 包含所有的HTML標簽。
 print(ss.get_attribute('textContent'))  #用textContent 和 innerText 只會得到文本內容,而不會包含 HTML 標簽。
                                
 print(ss.get_attribute('innerText')) innerText 不是 W3C DOM 的指定內容,FireFox不支持
 用谷歌瀏覽器運行以上3句print結果如下

      1.<b class="nui-ico se0 pv1"></b>發送成功<span style="font-size: 14px; margin-left: 5px;"><a id="_mail_link_39_262" href="javascript:void(0)" class=" js-component-link nui-txt-link" hidefocus="hidefocus">可用手機接收回復</a></span><span></span><span style="font-size: 14px; margin-left: 5px;"><a id="_mail_link_40_264" href="javascript:void(0)" class=" js-component-link nui-txt-link" hidefocus="hidefocus"><b class="nui-ico nui-ico-sms nui-ico-sms" style="margin-bottom: 10px;"></b>免費短信通知</a></span>
    2.發送成功可用手機接收回復免費短信通知

    3.<為空>

    可見 innerText 也不支持谷歌呀!

     

 

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM