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'), 通過textContent, innerText, innerHTML等屬性獲 取。(划重點)
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 也不支持谷歌呀!
