1.舉個例子:selenium使用driver.find_element_by_xpath().text 提取不到標簽文本??
如果我們提取的元素文本為空時,而不是我們想要的文本時,這時可能就是因為你所定位的元素被隱藏了,我們確認下是不是真的被隱藏了。。。
1.判斷是否被隱藏 aa = driver.find_element_by_xx().is_displayed() print(aa) 打印結果,如果返回false.那就說明被隱藏了
2.怎么解決?
方法一: 修改頁面當前定位元素,或者當前元素父元素的CSS,使元素的is_displayed() 值為true.
方法二: is_displayed() 為false的元素,依然可以通過getAttribute()方法獲取元素的屬性.
由於webdriver spec的定義,Selenium WebDriver 只會與可見元素交互,所以獲取隱藏元素的文本總是會返回空字符串,可是,在某些情況下,我們需要獲取隱藏元素的文本。這些內容可以使用element.attribute('attributeName'),
通過textContent, innerText, innerHTML等屬性獲取。
(1)innerHTML 會返回元素的內部 HTML, 包含所有的HTML標簽。
例如,<div>Hello <p>World!</p></div>的innerHTML會得到Hello <p>World!</p>
(2)textContent 和 innerText 只會得到文本內容,而不會包含 HTML 標簽,textContent 是 W3C 兼容的文字內容屬性,但是 IE 不支持
(3)innerText 不是 W3C DOM 的指定內容,FireFox不支持、谷歌也不支持
舉個例子
ss = driver.find_element_by_class_name('xxx') # 定位 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不支持