【转】Selenium模拟JQuery滑动解锁

摘要:
//Www.hellowba.com/demo/2017/unlock/当我手动单击滑块时,#找到元素element=driver的原始位置。find_element_by_Id(“xx”)#将定位元素移动到target=driver的目标位置。find_elements_by_Id(“xx“)ActionChains(driver)。drag_and_drop(element,

滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路。

首先先看个例子。

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

【转】Selenium模拟JQuery滑动解锁第1张

当我手动点击滑块时,改变的只是样式:

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 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()  #鼠标左键按下不放

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.text
print(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滑动解锁第2张

免责声明:文章转载自《【转】Selenium模拟JQuery滑动解锁》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面向学生的美国国家教育技术标准(第二版)数据可视化之DAX篇(一)Power BI时间智能函数如何处理2月29日的?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 获取系统时间以及实时刷新时间(附参考代码)

使用date获取系统时间: private SimpleDateFormat simpleDateFormat; private Date date; //onCreate中 simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); date = n...

从BF算法到kmp算法详解

正文索引 一、KMP介绍 二、例子:子串匹配母串 1.BF算法的解决方法 三、kmp算法的实现 (1)为什么已经有BF算法了还要有KMP算法呢? (2)发明的算法基本思想 (3)具体实现 一、KMP介绍 KMP算法是一种改进的字符串匹配算法(有BF算法改进而来,BF算法是暴利搜索匹配的方式,而KMP则是对BF算法的回溯过程进行改进,从而大幅度降低了时间复...

rt—移植笔记2(Lwip)

首先参考f107已经有的目录结构添加Lwip这一组,添加各种.c文件及.文件。 还有drive下边的很重要的eth.c 到此,工程编译通过。(刚开始,小编是一个一个 的比对。。。一个一个错误排查。。。好心累,,,完全可以打开f103相应的文件,找到文件位置,f407就参照文件位置将文件下边全部添加即可,大大提高效率) 接下来,打开lwip的宏定义,rt...

[UE4]抛物线指示器

一、抛物线的有以下4中函数    二、本例使用Predict Projectile Path By TraceChannel方法。      抛物线三要素:发射位置、发射角度、发射速度。   1、Start Pos:起始位置   2、Launch  Velocity:发射速度,这是一个向量。向量是包括角度、长度(也可以理解是速度)。   3、Trace C...

在WIn10上删除以windows保留字命名的文件

在WIn10上删除以windows保留字命名的文件 在使用NeQuick的时候,从github上下载的Galieo系统的NeQuick的python代码里面有一个aux.py的文件,下载下来之后由于aux是windows的保留字,因而windows会自动无法对这个文件进行访问、修改、删除等操作。关于这些保留字还有很多。下面列出来了大部分。 CON, PRN...

二维差分基础

二维差分数组构造: (bleft [ i ight ]left [ j ight ]=aleft [ i ight ]left [ j ight ]-aleft [ i-1 ight ]left [ j ight ]-aleft [ i ight ]left [ j-1 ight ]+aleft [ i-1 ight ]left [ j-1 ight ])...