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 相关文章推荐
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
python实现合并两个数组的方法
May 16 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python实现名片管理系统
Nov 29 Python
python中提高pip install速度
Feb 14 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
Yii分页用法实例详解
2014/12/04 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
angularjs 源码解析之injector
2016/08/22 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
js常用DOM方法详解
2017/02/04 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
Python 操作 MySQL数据库
2020/09/18 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
博士生入学考试推荐信
2013/11/17 职场文书
少年闰土教学反思
2014/02/22 职场文书
爱心活动计划书
2014/04/26 职场文书
党员个人剖析材料
2014/09/30 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
公司老总年会致辞
2015/07/30 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
Python数据类型最全知识总结
2021/05/31 Python