国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python2.7+selenium2實(shí)現(xiàn)淘寶滑塊自動認(rèn)證功能

2020-02-22 23:19:29
字體:
供稿:網(wǎng)友

本文為大家分享了python2.7+selenium2實(shí)現(xiàn)淘寶滑塊自動認(rèn)證的具體代碼,供大家參考,具體內(nèi)容如下

1.編譯環(huán)境

操作系統(tǒng):win7;語言:python2.7+selenium2;ide:pycharm;瀏覽器:IE10,chrome

2.1意外開始

今天登錄淘寶時(shí)候發(fā)現(xiàn)吧密碼搞忘了,選擇找回密碼時(shí)淘寶居然加了滑塊認(rèn)證。

這里寫圖片描述

恰巧自己也在學(xué)習(xí)selenium,就想試一試能不能實(shí)現(xiàn)自動拖動滑塊。

2.2 度娘查找

由于自己沒多少思路,第一選擇就是問度娘,終于找到一篇文章,該文章使用C#實(shí)現(xiàn)了該功能,并提到需要定位滑塊元素在網(wǎng)頁和桌面的坐標(biāo),而這個(gè)功能直接可以用selenium中的查找元素接口搞定,那么剩下最后一個(gè)問題就是如何得知滑塊的位移量。(原諒我忘記該文章的名字了)

2.3 開始試驗(yàn)

大家在手動操作滑塊的時(shí)候會發(fā)現(xiàn)如果滑塊位移不夠,它要自動還原就不能觸發(fā)認(rèn)證成功環(huán)節(jié),所以我用一個(gè)笨方法先手動操作看看。打開瀏覽器按F12,得到代碼如下:

這里寫圖片描述

然后拖動滑塊位移,發(fā)現(xiàn)滑塊元素的style一直在變化如圖:

這里寫圖片描述

現(xiàn)在大概清楚右位移量為300px,OK開始寫代碼,經(jīng)過很多次試驗(yàn)確定滑塊移動后有三種情況:

1無響應(yīng):請按住滑塊,拖到到最右邊;
2失敗:哎呀,加載失敗了,請點(diǎn)擊刷新頁面
3成功:請點(diǎn)擊圖中xx字,請?jiān)谙路捷斎離x字

解決思路:無響應(yīng)時(shí),需要重復(fù)拖動滑塊,直到成功為止;失敗了,需要自動點(diǎn)擊刷新按鈕,使滑塊回到無響應(yīng)狀態(tài);成功了,暫時(shí)是直接退出瀏覽器,驗(yàn)證碼識別還在研究中,以后補(bǔ)齊。

2.4 完整代碼

PS:粘貼上去的代碼,我不知道怎么對齊,如果大家直接復(fù)制運(yùn)行,可能會報(bào)錯(cuò),請自動修改。

# encoding=utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimport time#使用谷歌瀏覽器,方便查看效果,如果追求速度可以用phantomJSdriver=webdriver.Chrome()#調(diào)整最大窗口,否則某些元素?zé)o法顯示driver.maximize_window()#使用淘寶找回密碼界面做測試driver.get('https://passport.taobao.com/ac/password_find.htm?spm=a2107.1.0.0.phBxhD&from_site=0')time.sleep(5)#等待滑動模塊和其他JS文件加載完畢!while True:  try:  #定位滑塊元素    source=driver.find_element_by_xpath("http://*[@id='nc_1_n1z']")   #定義鼠標(biāo)拖放動作            ActionChains(driver).drag_and_drop_by_offset(source,400,0).perform()    #等待JS認(rèn)證運(yùn)行,如果不等待容易報(bào)錯(cuò)    time.sleep(2)    #查看是否認(rèn)證成功,獲取text值  text=driver.find_element_by_xpath("http://div[@id='nc_1__scale_text']/span")    #目前只碰到3種情況:成功(請?jiān)谠谙路捷斎腧?yàn)證碼,請點(diǎn)擊圖);無響應(yīng)(請按住滑塊拖動);失敗(哎呀,失敗了,請刷新)    if text.text.startswith(u'請?jiān)谙路?):      print('成功滑動')      break    if text.text.startswith(u'請點(diǎn)擊'):      print('成功滑動')      break    if text.text.startswith(u'請按住'):      continue  except Exception as e:  #這里定位失敗后的刷新按鈕,重新加載滑塊模塊  driver.find_element_by_xpath("http://div[@id='havana_nco']/div/span/a").click()    print(e) #退出瀏覽器,如果瀏覽器打開多個(gè)窗口,可以使用driver.close()關(guān)閉當(dāng)前窗口而不是關(guān)閉瀏覽器driver.quit()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 淮滨县| 大安市| 上高县| 杂多县| 武安市| 抚州市| 红桥区| 天津市| 英德市| 黄浦区| 高邑县| 永安市| 荣成市| 吉木萨尔县| 当涂县| 桐庐县| 调兵山市| 上高县| 张北县| 镇原县| 南宫市| 江孜县| 镇巴县| 安达市| 若尔盖县| 壶关县| 泰宁县| 桂平市| 洛南县| 涞源县| 山阴县| 房山区| 沙河市| 安宁市| 米林县| 昌宁县| 玛纳斯县| 平南县| 醴陵市| 旬阳县| 鄂托克前旗|