Python中Selenium模拟JQuery滑动解锁实例


Posted in Python onJuly 26, 2017

本文介绍了Python中Selenium模拟JQuery滑动解锁实例,分享给大家,也给自己留个笔记

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

首先先看个例子。

Python中Selenium模拟JQuery滑动解锁实例

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

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!

Python中Selenium模拟JQuery滑动解锁实例 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。 

Python 相关文章推荐
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
pytorch构建网络模型的4种方法
Apr 13 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
Python爬虫使用代理IP的实现
Oct 27 Python
Java文件与类动手动脑实例详解
Nov 10 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
python中的时区问题
Jan 14 Python
Python列表和元组的定义与使用操作示例
Jul 26 #Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 #Python
python基础之入门必看操作
Jul 26 #Python
Python简单定义与使用字典dict的方法示例
Jul 25 #Python
Python学习入门之区块链详解
Jul 25 #Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 #Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 #Python
You might like
PHP动态图像的创建
2006/10/09 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
Djang中静态文件配置方法
2015/07/30 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
小学庆六一活动总结
2014/08/28 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android