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 相关文章推荐
浅谈dataframe中更改列属性的方法
Jul 10 Python
3分钟学会一个Python小技巧
Nov 23 Python
Python正则表达式和re库知识点总结
Feb 11 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
pycharm安装及如何导入numpy
Apr 03 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
利用python 读写csv文件
Sep 10 Python
Python 批量下载阴阳师网站壁纸
May 19 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计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
js选项卡的实现方法
2015/02/09 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
Python运算符重载详解及实例代码
2017/03/07 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python构建网页爬虫原理分析
2017/12/19 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
详解Python自建logging模块
2018/01/29 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
医学生实习自荐信
2013/10/01 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
个人四风对照检查材料
2014/09/26 职场文书
索尼ICF-36收音机评测
2022/04/30 无线电