selenium+python自動化104-如何獲取隱藏元素text文本


前言

首先 selenium 是可以定位到隱藏元素的,但是 selenium 不能跟隱藏元素交互,也就是隱藏元素element不能使用element.click()方法。
隱藏元素element.text 雖然不會報錯,但獲取到的文本是空值

隱藏元素定位

登錄之后,獲取個人中心的賬號內容,在頁面上沒顯示,f12能看到,很明顯這是個隱藏元素style="display: none;"

from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


driver = webdriver.Chrome()
driver.get("http://49.235.x.xx:8200/users/login/")
time.sleep(3)

# 先登錄
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)

# 隱藏元素定位
yoyo = driver.find_element_by_css_selector(".userdetail")
print(yoyo)

# 獲取文本
print(yoyo.text)

結果返回

<selenium.webdriver.remote.webelement.WebElement (session="d705909d146a26f88883e7f8c493de9b", element="1bb6cc1f-f205-482e-a0aa-bd7b5e923a9d")>

很明顯隱藏元素能定位到,但是獲取的文本值是空的(隱藏元素不能交互)

JavaScript 獲取隱藏元素文本

selenium 的方法不能操作隱藏元素,但是 JavaScript 是可以直接操作隱藏元素的,先在瀏覽器上調試

document.querySelector('.userdetail p').innerText

於是可以用 selenium 執行 JavaScript 腳本來獲取隱藏元素的 text

from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


driver = webdriver.Chrome()
driver.get("http://49.235.x.xx:8200/users/login/")
time.sleep(3)

# 先登錄
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)

js = "return document.querySelector('.userdetail p').innerText"
text = driver.execute_script(js)
print(text) # 1234@qq.com

這是通過 JavaScript 的方法獲取的,其實也可以通過鼠標操作的方法,鼠標放到元素的位置上,讓隱藏元素顯示出來,就可以正常操作了。

get_attribute('innerText')

看到評論可以用get_attribute('innerText')獲取元素的文本屬性,試了下也是可以的

from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


driver = webdriver.Chrome()
driver.get("http://49.235.x.x:8200/users/login/")
time.sleep(3)

# 先登錄
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)

# # 方法一
# js = "return document.querySelector('.userdetail p').innerText"
# text = driver.execute_script(js)
# print(text)    # 1234@qq.com

# 方法二 get_attribute('innerText')
t = driver.find_element_by_css_selector('.userdetail p').get_attribute('innerText')
print(t)

運行結果:1234@qq.com



視頻課程點我 ->立即參與


免責聲明!

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



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