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中的进程分支fork和exec详解
Apr 11 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
python生成lmdb格式的文件实例
Nov 08 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
pandas数据集的端到端处理
Feb 18 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
pandas数据处理进阶详解
Oct 11 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
浅析python中的del用法
Sep 02 Python
Python+Tkinter打造签名设计工具
Apr 01 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
php5.5新数组函数array_column使用
2013/07/08 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
介绍Python中的__future__模块
2015/04/27 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python学生信息管理系统
2018/03/13 Python
详解python之协程gevent模块
2018/06/14 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python中线程和进程有何区别
2020/06/17 Python
python使用建议技巧分享(三)
2020/08/18 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
汽车销售顾问求职自荐信
2014/01/01 职场文书
2014春晚主持词
2014/03/25 职场文书
趣味运动会广播稿
2014/09/13 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
三好学生个人总结
2015/02/15 职场文书
公司人事任命通知
2015/04/20 职场文书
学校计划生育责任书
2015/05/09 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
如何撰写创业策划书
2019/06/27 职场文书