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 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
简单了解python的一些位运算技巧
Jul 13 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python实现桌面托盘气泡提示
Jul 29 Python
如何运行带参数的python脚本
Nov 15 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
python 读取、写入txt文件的示例
Sep 27 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php中的时间显示
2007/01/18 PHP
MySql中正则表达式的使用方法描述
2008/07/30 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php数组编码转换示例详解
2014/03/11 PHP
ucenter通信原理分析
2015/01/09 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Python创建系统目录的方法
2015/03/11 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
python中reload重载实例用法
2020/12/15 Python
python Scrapy框架原理解析
2021/01/04 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
网络教育自我鉴定
2014/02/04 职场文书
聚美优品励志广告词
2014/03/14 职场文书
2014年医生工作总结
2014/11/21 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS