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 04 Python
Python中字典和JSON互转操作实例
Jan 19 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
django允许外部访问的实例讲解
May 14 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python实现AES加密解密
Mar 28 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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 程序员的调试技术小结
2009/11/15 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
自制PHP框架之设计模式
2017/05/07 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
JQuery从头学起第二讲
2010/07/04 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Vue组件库发布到npm详解
2018/02/17 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
python实现复制整个目录的方法
2015/05/12 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
中专毕业生自荐信范文
2013/11/28 职场文书
团员的自我评价
2013/12/01 职场文书
物流创业计划书
2014/02/01 职场文书
财务总监岗位职责
2014/03/07 职场文书
成本会计实训报告
2014/11/05 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
python 爬取天气网卫星图片
2021/06/07 Python
SQL中的连接查询详解
2022/06/21 SQL Server
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers