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 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
python绘制地震散点图
Jun 18 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python随机生成库faker库api实例详解
Nov 28 Python
python对文件的操作方法汇总
Feb 28 Python
Python流程控制语句的深入讲解
Jun 15 Python
python 基于wx实现音乐播放
Nov 24 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Pytorch中的数据集划分&正则化方法
May 27 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
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
jQuery遍历节点树方法分析
2016/09/08 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
js实现简易ATM功能
2020/10/27 Javascript
python三元运算符实现方法
2013/12/17 Python
python中元类用法实例
2014/10/10 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
python数据类型强制转换实例详解
2020/06/22 Python
python创建文本文件的简单方法
2020/08/30 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
历史学专业推荐信
2013/11/06 职场文书
行政助理岗位职责范文
2013/12/03 职场文书
外贸专业求职信
2014/03/09 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书