Selenium類比JQuery滑動解鎖

來源:互聯網
上載者:User

標籤:過程   利用   頁面   黃色   ges   bsp   cte   dex   結果   

滑動解鎖一直做UI自動化的痛點之一,我補一篇滑動解鎖的例子,希望能給初做Web UI自動化測試的同學一些思路。

 

首先先看個例子。

https://www.helloweba.com/demo/2017/unlock/

 

當我手動點擊滑塊時,改變的只是樣式:

1、slide-to-unlock-handle 表示滑塊,滑塊的左邊距在變大(因為它在向右移動嘛!)

2、Slide-tounlock-progress 表示滑過之後的背景黃色,黃色的寬度在增加,因為滑動經過的地方都變黃了。

 

除些之外,沒其它任何變化了,所以我們利用滑鼠的拖動貌似不行!因為滑鼠的拖動是將一個元素移動到另一個元素上。這樣:

# 定位元素的原位置element = driver.find_element_by_id("xx")# 定位元素要移動到的目標位置target = driver.find_element_by_id("xx")ActionChains(driver).drag_and_drop(element, target).perform()

但在我手動示範的過程中,元素的位置並沒有發生變化。

 

---------------華麗分割-------------------------------------

接下來看我是怎麼實現的。

from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.common.exceptions import UnexpectedAlertPresentExceptionfrom time import sleepdriver = 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()  #滑鼠左鍵按下不放for index in range(200):    try:        action.move_by_offset(2, 0).perform() #平行移動滑鼠    except UnexpectedAlertPresentException:        break    action.reset_actions()    sleep(0.1)  #等待停頓時間# 列印警告框提示success_text = driver.switch_to.alert.textprint(success_text)sleep(5)driver.quit()

driver.find_elements_by_class_name("slide-to-unlock-handle")[0]

首先,我要操作的頁面上有好幾個滑塊,我先通過通過class屬性找到所有的裡面的第一個。

 

click_and_hold()

通過click_and_hold()方法對滑塊按下滑鼠左鍵。

 

move_by_offset()

接下來就是通過for迴圈動滑塊的位置,move_by_offset()方法第一個參數是X軸,第二個參數是Y軸,單位為像素。因為是平行移動,所以Y設定為0。 X每次移動兩2個像素。

當解鎖成功後會拋UnexpectedAlertPresentException異常,捕捉後跳出迴圈。

每次迴圈休眠0.1秒,時間間隔越小,移動越順滑喲!

 

核心的幾步介紹完了,接下來就是擷取警告框上面的提示資訊並列印,然後關閉瀏覽器。

 

列印結果為:

successfully unlock!

 

 

Selenium類比JQuery滑動解鎖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.