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实现倒计时的示例
Feb 14 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
Django Rest framework频率原理与限制
Jul 26 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
django中related_name的用法说明
May 20 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删除文件夹的三种方法
2013/06/09 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python分支结构(switch)操作简介
2018/01/17 Python
python删除服务器文件代码示例
2018/02/09 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
工程承诺书怎么写
2014/05/24 职场文书
奥林匹克的口号
2014/06/13 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
消防安全月活动总结
2015/05/08 职场文书
汉字听写大会观后感
2015/06/12 职场文书
工资证明格式模板
2015/06/12 职场文书
毕业生入职感言
2015/07/31 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android