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

首先先看个例子。

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

1、slide-to-unlock-handle 表示滑块,滑块的左边距在变大(因为它在向右移动嘛!)

2、Slide-tounlock-progress 表示滑过之后的背景黄色,黄色的宽度在增加,因为滑动经过的地方都变黄了。

除此之外,没其它任何变化了,所以我们利用鼠标的拖动貌似不行!因为鼠标的拖动是将一个元素移动到另一个元素上。这样:

1 #定位元素的原位置

2 element = driver.find_element_by_id("xx")3 #定位元素要移动到的目标位置

4 target = driver.find_element_by_id("xx")5

6 ActionChains(driver).drag_and_drop(element, target).perform()

但在我手动演示的过程中,元素的位置并没有发生变化。

------------------------------------------华丽分割------------------------------------------

接下来看我是怎么实现的。

1 from selenium importwebdriver2 from selenium.webdriver.common.action_chains importActionChains3 from selenium.common.exceptions importUnexpectedAlertPresentException4 from time importsleep5

6 driver =webdriver.Chrome()7 driver.get("https://www.helloweba.com/demo/2017/unlock/")8

9

10 dragger = driver.find_elements_by_class_name("slide-to-unlock-handle")[0]11

12 action =ActionChains(driver)13

14 action.click_and_hold(dragger).perform() #鼠标左键按下不放

15

16 for index in range(200):17 try:18 action.move_by_offset(2, 0).perform() #平行移动鼠标

19 exceptUnexpectedAlertPresentException:20 break

21 action.reset_actions()22 sleep(0.1) #等待停顿时间

23

24

25 #打印警告框提示

26 success_text =driver.switch_to.alert.text27 print(success_text)28

29 sleep(5)30

31 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!

python自动化滑动解锁_Python中Selenium模拟JQuery滑动解锁实例相关推荐

  1. python获取登录按钮_Python:Selenium模拟Chrome浏览器抓取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

  2. python的id方法_python中id()函数的实用研究实例

    python中id()函数的实用研究实例 >>> a = 2.5 >>> b = 2.5 >>> c = b >>> a is ...

  3. python怎么处理数据_python中scrapy处理项目数据的实例分析

    在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好 ...

  4. python中类的构成_Python中类型关系和继承关系实例详解

    本文详细介绍了Python中类型关系和继承关系.分享给大家供大家参考.具体分析如下: 如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航.这种导航关系使 ...

  5. Selenium模拟JQuery滑动解锁

    滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. https://www.helloweba.com/demo/2017 ...

  6. python 裁判文书网_python - 用selenium模拟登陆裁判文书网,系统报错找不到元素。...

    问 题 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import Desire ...

  7. python代码写龙卷风_Python中的模拟龙卷风类

    我想用单元测试来介绍on_text方法.我想用非unicode消息检查on_text,看看{}被调用了.在class MyTornadoClass(object): @gen.coroutine de ...

  8. python逗号怎么用_Python中逗号的三种作用实例分析

    本文实例讲述了Python中逗号的三种作用.分享给大家供大家参考.具体分析如下: 最近研究python 遇到个逗号的问题 一直没弄明白 今天总算搞清楚了 1.逗号在参数传递中的使用: 这种情况不多说 ...

  9. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

最新文章

  1. iOS app性能优化的那些事
  2. 《小美斗地主》:棋牌手游新商业模式启示录
  3. 列表初始化和赋值初始化的使用注意事项
  4. [译]第三章:什么是组织结构
  5. 测试工程师---笔试面试题
  6. loadrunner之header相关,token等
  7. Halcon深度学习预训练网络模型
  8. 知识管理,助力员工培训体系构建
  9. 51单片机led流水灯程序
  10. 怎样将计算机和电视机连接网络连接,家里怎么连接网络到电视机,让电脑和电视都可以上网...
  11. ES:java.nio.file.AccessDeniedException: /opt/shan/es/config/elasticsearch.keystore
  12. 【活动时间调整】博客搬家,有礼相送
  13. 【小程序实战学习(一)】购物小程序-首页
  14. Hadoop/Hive-学习笔记【中级篇】
  15. Softing新版HART多路复用器软件支持西门子控制器
  16. 微信小程序-图片宽高设置
  17. 我如何从月薪1800到年薪百万的饿了么技术总监到自由职业?
  18. C#实现的系统内存清理工具
  19. Web登录使用RSA对密码进行加密解密过程
  20. 动态联编与静态联编的区别

热门文章

  1. 计算机毕业设计Node.js+Vue理想电子商城网站(程序+源码+LW+部署)
  2. 计算机应用专业社会环境分析,计算机应用专业人才岗位需求分析调研报告
  3. 普歌-飞灵团队-ES6汇总
  4. 20200515省选模拟赛B、幻化成风(毒瘤容斥题+构造容斥系数+生成函数+hash状压DP+Trie树优化背包)
  5. 实战py绘制物流行业快递业务量折线图
  6. Windows Sever 2008 获得NTFS文件系统的方式
  7. 单纯形法详解及MATLAB实现,对偶单纯形法详解及MATLAB实现
  8. 【Linux】 NFS服务器实现开机自动挂载
  9. 主流区块链共识算法大全
  10. 32:第三章:开发通行证服务:15:浏览器存储介质,简介;(cookie,Session Storage,Local Storage)