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过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python聊天室程序(基础版)
Apr 01 Python
python实现图片识别汽车功能
Nov 30 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
python:动态路由的Flask程序代码
Nov 22 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
Python 读写 Matlab Mat 格式数据的操作
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编程网上资源导航
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
Expandable "Detail" Table Rows
2007/08/29 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
python里dict变成list实例方法
2019/06/26 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
大学生的应聘自我评价
2013/12/13 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
营业员岗位职责范本
2015/04/14 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
详解MySQL集群搭建
2021/05/26 MySQL