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入门篇之数字
Oct 20 Python
简单说明Python中的装饰器的用法
Apr 24 Python
python数组复制拷贝的实现方法
Jun 09 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python和ruby,我选谁?
Sep 13 Python
python 编码规范整理
May 05 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
python之随机数函数的实现示例
Dec 30 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 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数据库类
2009/05/27 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
PHP实现八皇后算法
2019/05/06 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
jQuery 树形结构的选择器
2010/02/15 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
Java中Timer的用法详解
2015/10/21 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
python利用拉链法实现字典方法示例
2017/03/25 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
将python图片转为二进制文本的实例
2019/01/24 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
开办化妆品公司创业计划书
2013/12/26 职场文书
公司保密管理制度
2015/08/04 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
python 离散点图画法的实现
2022/04/01 Python