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

     今天爬取一些網站,遇到了一些比較難理解的問題,索性一直研究,幸好解決了。發現這方面的東西寫的人比較少,於是就寫一下,分享心得。

首先,網頁的界面如下,顯示毫無問題:

     

再看源碼:

怎麼看,這都是一個正常的標籤獲取。然而就是獲取不到這個值。

maxTi = browser.find_element_by_css_selector('#window > table:nth-child(6) > tbody > tr:nth-child(2) > td:nth-child(2)').text

這個方式每次獲取的都是空值。

想過是不是有 iframe 存在的情況。仔細查找代碼,並沒有!

也嘗試過

driver.switchTo().defaultContent()

然而,都沒有結果。

最後找到了一個博客:https://www.cnblogs.com/ppppying/p/7755064.html

給出瞭解決方法。

這個問題的本質是被隱藏了。

 maxIn = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').get_attribute('innerHTML')#承諾到窗口最多次數說明
    ye_or_no = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').is_displayed()#承諾到窗口最多次數說明
    test_play = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').get_attribute('innerHTML')
    print('是否被隱藏--------------------------------',ye_or_no)
    print('顯示文本內容--------------------------------',test_play)

ss..is_displayed()查看是否被隱藏。如果返回False,就是這個值被隱藏了。

然後用ss.get_attribute('innerHTML')獲得被隱藏的東西。

上述博客還給出了其他的三種解決方法:

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不支持

1,2種在selenium使用chrome的時候均能正常使用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章