程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python+selenium 獲取元素文本為空None的解決辦法

編輯:Python

用某8同城練習selenium的時候,有一個"加載更多"的按鈕,通常是不可見的.通過selenium獲取這個文本內容總是為空

無效方法

1\ text屬性

        element.text

2\ 雖然在浏覽器F12的控制台,可以獲取該元素文本內容,但是用selenium發送js獲取內容還是為空

有效方法 

1\確定元素是否為空

2\解決辦法

(1)selenium 只會與可見元素交互,所以獲取隱藏元素的文本為空None.可以修改元素相關屬性為可見

(2)通過get_attribute()方法獲取元素文本

        在獲取隱藏元素的文本信息時,可以使用get_attribute()方法,通過textContent、innerText、innerHTML等屬性獲取。

innerHTML會返回元素內部的HTML,包含所有的HTML標簽。

textContent和innerText置灰得到文本內容,而不會包含HTML標簽。textContent是W3C兼容的文字內容屬性,但是IE不支持;innerText不是W3C DOM的指定內容,但是FireFox不支持。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Firefox(keep_alive=True)
driver.maximize_window()
driver.get("https://XXXXX.58.com/pinpaigongyu/")
xpath = (By.XPATH,'//div[@class="loadbtn "]')
element = driver.find_element(*xpath)
text = element.get_attribute("innerText")
# 對於不可見元素,雖然能在浏覽器F12的控制台可以獲取文本,但是selenium發送的js還是無法獲取
# script = "arguments[0].textContent"
# text = driver.execute_script(script,element)
print(text)
time.sleep(4)
driver.quit()


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved