在使用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)