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使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python numpy 显示图像阵列的实例
Jul 02 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
利用Python优雅的登录校园网
Oct 21 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
总结Pyinstaller打包的高级用法
Jun 28 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从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Javascript 入门基础学习
2010/03/10 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
python僵尸进程产生的原因
2017/07/21 Python
Django 前后台的数据传递的方法
2017/08/08 Python
python入门教程 python入门神图一张
2018/03/05 Python
python多维数组切片方法
2018/04/13 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
extern是什么意思
2016/03/10 面试题
材料会计岗位职责
2014/03/06 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
《小小的船》教学反思
2016/02/18 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技