Python中Selenium模拟JQuery滑动解锁实例

发布时间 - 2026-01-11 02:30:53    点击率:

本文介绍了Python中Selenium模拟JQuery滑动解锁实例,分享给大家,也给自己留个笔记

滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路。

首先先看个例子。

当我手动点击滑块时,改变的只是样式:

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  # Selenium 滚动页面至元素可见的方法  # python+selenium行为链登录12306(滑动验证码滑块)  # python爬虫之利用selenium+opencv识别滑动验证并模拟登陆知乎功能  # python+opencv+selenium自动化登录邮箱并解决滑动验证的问题  # python使用selenium登录QQ邮箱(附带滑动解锁)  # python中的selenium实现自动向下滚动页面并指定最大滑动距离  # 滑块  # 鼠标  # 解锁  # 第一个  # 拖动  # 按下  # 鼠标左键  # 我要  # 在我  # 是怎么  # 上有  # 当我  # 提示信息  # 第二个  # 给大家  # 看我  # 我先  # 几步  # 能给  # 它在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: canvas 画布在主流浏览器中的尺寸限制详细介绍  lovemo网页版地址 lovemo官网手机登录  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  奇安信“盘古石”团队突破 iOS 26.1 提权  Python3.6正式版新特性预览  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  如何在Tomcat中配置并部署网站项目?  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何快速搭建自助建站会员专属系统?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何制作一个表白网站视频,关于勇敢表白的小标题?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  JS去除重复并统计数量的实现方法  详解jQuery中基本的动画方法  Python文件操作最佳实践_稳定性说明【指导】  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  js实现点击每个li节点,都弹出其文本值及修改  WordPress 子目录安装中正确处理脚本路径的完整指南  js代码实现下拉菜单【推荐】  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何快速搭建高效WAP手机网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何在阿里云服务器自主搭建网站?  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel API资源类怎么用_Laravel API Resource数据转换  JS弹性运动实现方法分析  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  JavaScript如何实现路由_前端路由原理是什么  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何实现API速率限制?(Rate Limiting教程)  Python并发异常传播_错误处理解析【教程】  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  JS碰撞运动实现方法详解  如何快速搭建FTP站点实现文件共享?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】