Python中Selenium模擬JQuery滑動(dòng)解鎖實(shí)例
本文介紹了Python中Selenium模擬JQuery滑動(dòng)解鎖實(shí)例,分享給大家,也給自己留個(gè)筆記
滑動(dòng)解鎖一直做UI自動(dòng)化的難點(diǎn)之一,我補(bǔ)一篇滑動(dòng)解鎖的例子,希望能給初做Web UI自動(dòng)化測(cè)試的同學(xué)一些思路。
首先先看個(gè)例子。
當(dāng)我手動(dòng)點(diǎn)擊滑塊時(shí),改變的只是樣式:
1、slide-to-unlock-handle 表示滑塊,滑塊的左邊距在變大(因?yàn)樗谙蛴乙苿?dòng)嘛?。?/p>
2、Slide-tounlock-progress 表示滑過(guò)之后的背景黃色,黃色的寬度在增加,因?yàn)榛瑒?dòng)經(jīng)過(guò)的地方都變黃了。
除些之外,沒(méi)其它任何變化了,所以我們利用鼠標(biāo)的拖動(dòng)貌似不行!因?yàn)槭髽?biāo)的拖動(dòng)是將一個(gè)元素移動(dòng)到另一個(gè)元素上。這樣:
# 定位元素的原位置 element = driver.find_element_by_id("xx") # 定位元素要移動(dòng)到的目標(biāo)位置 target = driver.find_element_by_id("xx") ActionChains(driver).drag_and_drop(element, target).perform()
但在我手動(dòng)演示的過(guò)程中,元素的位置并沒(méi)有發(fā)生變化。
接下來(lái)看我是怎么實(shí)現(xiàn)的。
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.common.exceptions import UnexpectedAlertPresentException from time import sleep driver = webdriver.Chrome() driver.get("https://www.helloweba.com/demo/2017/unlock/") dragger = driver.find_elements_by_class_name("slide-to-unlock-handle")[0] action = ActionChains(driver) action.click_and_hold(dragger).perform() #鼠標(biāo)左鍵按下不放 for index in range(200): try: action.move_by_offset(2, 0).perform() #平行移動(dòng)鼠標(biāo) except UnexpectedAlertPresentException: break action.reset_actions() sleep(0.1) #等待停頓時(shí)間 # 打印警告框提示 success_text = driver.switch_to.alert.text print(success_text) sleep(5) driver.quit()
driver.find_elements_by_class_name("slide-to-unlock-handle")[0]
首先,我要操作的頁(yè)面上有好幾個(gè)滑塊,我先通過(guò)通過(guò)class屬性找到所有的里面的第一個(gè)。
click_and_hold()
通過(guò)click_and_hold()方法對(duì)滑塊按下鼠標(biāo)左鍵。
move_by_offset()
接下來(lái)就是通過(guò)for循環(huán)動(dòng)滑塊的位置,move_by_offset()方法第一個(gè)參數(shù)是X軸,第二個(gè)參數(shù)是Y軸,單位為像素。因?yàn)槭瞧叫幸苿?dòng),所以Y設(shè)置為0。 X每次移動(dòng)兩2個(gè)像素。
當(dāng)解鎖成功后會(huì)拋UnexpectedAlertPresentException異常,捕捉后跳出循環(huán)。
每次循環(huán)休眠0.1秒,時(shí)間間隔越小,移動(dòng)越順滑喲!
核心的幾步介紹完了,接下來(lái)就是獲取警告框上面的提示信息并打印,然后關(guān)閉瀏覽器。
打印結(jié)果為:
successfully unlock!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Selenium 滾動(dòng)頁(yè)面至元素可見(jiàn)的方法
- python+selenium行為鏈登錄12306(滑動(dòng)驗(yàn)證碼滑塊)
- python爬蟲(chóng)之利用selenium+opencv識(shí)別滑動(dòng)驗(yàn)證并模擬登陸知乎功能
- python+opencv+selenium自動(dòng)化登錄郵箱并解決滑動(dòng)驗(yàn)證的問(wèn)題
- python使用selenium登錄QQ郵箱(附帶滑動(dòng)解鎖)
- python中的selenium實(shí)現(xiàn)自動(dòng)向下滾動(dòng)頁(yè)面并指定最大滑動(dòng)距離
相關(guān)文章
python requests 測(cè)試代理ip是否生效
這篇文章主要介紹了python requests 測(cè)試代理ip是否生效的相關(guān)資料,需要的朋友可以參考下2018-07-07Python實(shí)現(xiàn)FTP文件傳輸?shù)膶?shí)例
在本篇文章里小編給各位分享的是關(guān)于Python實(shí)現(xiàn)FTP文件傳輸?shù)膶?shí)例以及相關(guān)代碼,需要的朋友們學(xué)習(xí)下。2019-07-07Python面向?qū)ο蠖鄳B(tài)實(shí)現(xiàn)原理及代碼實(shí)例
這篇文章主要介紹了Python面向?qū)ο蠖鄳B(tài)實(shí)現(xiàn)原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09完美解決Python matplotlib繪圖時(shí)漢字顯示不正常的問(wèn)題
今天小編就為大家分享一篇完美解決Python matplotlib繪圖時(shí)漢字顯示不正常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python部署chineseocr_lite的實(shí)現(xiàn)示例
本文主要介紹了python部署chineseocr_lite的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07快速部署 Scrapy項(xiàng)目scrapyd的詳細(xì)流程
這篇文章主要介紹了快速部署 Scrapy項(xiàng)目scrapyd的詳細(xì)流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09pygame實(shí)現(xiàn)鍵盤(pán)的連續(xù)監(jiān)控
這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)鍵盤(pán)的連續(xù)監(jiān)控,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04paramiko模塊安裝和使用(遠(yuǎn)程登錄服務(wù)器)
paramiko是用python語(yǔ)言寫(xiě)的一個(gè)模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進(jìn)行遠(yuǎn)程服務(wù)器的連接,下面學(xué)習(xí)一下它的使用方法2014-01-01