Selenium模擬操作中按鈕點擊(click) 失效解決方法


在使用selenium模擬操作時經常遇到一些使用原始方法解決不了的問題。
click失效問題

曾經多次遇到元素click()失敗的情況,經典的例子就是某網站的登錄框。

一般遇到click失敗時我的一般處理方法是改用send_keys(Keys.ENTER),直接用發回車鍵,簡單粗暴。

但是某網站的登錄框,直接定位按鈕元素click無效,發送回車鍵也無效,分析應該是焦點問題,但是試了多種方法也不成。

經過實驗,當焦點在登錄框的用戶文本框中,按回車會依次從用戶名框、密碼框到提交按鈕。

定位用戶名文本框,發送多個回車鍵,順利登錄。

當然麻煩點調用js也可以實現。

這種問題在Spynner、Ghost.py中也會出現,應當是某種前端框架或者webkit內核的問題。

文本框輸入內容失敗

這種問題同樣是在某網站登錄框中遇到的。
最常見的文本框輸入內容出問題是文本框的placeholder造成的。

解決方法:先用element.clear()清除原來文本框的placeholder,再用 element.send_keys(content)發送內容。

但是這種方法仍然處理不了,只能祭出execute_script了。

我給一個簡單的代碼來演示一下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url=url)
import time
time.sleep(3)

這兩種都是可以的 點擊事件 一種是鍵盤點擊, 第二種 就祭出我們的execute_script 執行js, 簡單粗暴

driver.find_element_by_id("kw").send_keys("天下")
time.sleep(3)
driver.find_element_by_id("su").send_keys(Keys.ENTER)

js = 'document.getElementById("su").click();'

driver.execute_script(js)

這兩種方法都是可以的,我們這里面沒有采用原始的方式 .click()

當然 這里面采用原始的 click() 也是可以的, 只不過是舉一個測試的例子


免責聲明!

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



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