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中的yield使用方法
Feb 11 Python
python中pass语句用法实例分析
Apr 30 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
python避免死锁方法实例分析
Jun 04 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
Python Flask-web表单使用详解
Nov 18 Python
pandas实现选取特定索引的行
Apr 20 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
详解Python requests 超时和重试的方法
Dec 18 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
python和node.js生成当前时间戳的示例
Sep 29 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
PHP中cookies使用指南
2007/03/16 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php格式化电话号码的方法
2015/04/24 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
JavaScript函数详解
2014/11/17 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python程序语言快速上手教程
2012/07/18 Python
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python实现批量图片格式转换
2020/06/16 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
酒店副总经理岗位职责范本
2014/02/04 职场文书
青安岗事迹材料
2014/05/14 职场文书
关于环保的活动方案
2014/08/25 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android