python+selenium+web實現自動化登錄之破解滑動驗證碼時遇到無法定位驗證碼彈框上面的元素時解決方案


一、問題描述

筆者最近在寫自動化登錄的case時,有一個破解滑動驗證碼的過程,但是在定位滑動驗證碼上的元素時,總是提示定位不到對應元素,報錯如下:

Unable to locate element: {"method":"xpath","selector":"//div[@class='show-code']/input"}

剛開時還以為定位方式不對,試了xpath定位,id/name定位,但是還是會報錯;后面想是不是網絡延遲問題導致的,所以在定位前加了延遲time.sleep(),

但是試了下不管家多久延遲還是有問題;后面想了下最大的原因可能是,頁面沒有跳轉到這個驗證碼彈框頁面上面來,后面仔細看了下頁面代碼,發現驗證碼彈框時一個frame框架,而frame中實際上是嵌入了另一個頁面,而webdriver每次只能在一個頁面識別,因此需要先定位到相應的frame,對那個頁面里的元素進行定位。這個問題也是讓我頭疼了好久,最終還是解決了,開心。

 
二、解決方案
 
在定位驗證碼彈框上面的元素時,先跳轉到frame框架,具體代碼如下:
 
注意:如果網速不夠快,最好加個延遲時間。
 
# 先跳到iframe框架
time.sleep(2)
driver.switch_to_frame('tcaptcha_iframe')
# 定位需要滑動的元素
time.sleep(1)
source = driver.find_element_by_xpath("//div[@id='tcaptcha_drag_thumb']")
 

 

 


免責聲明!

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



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