当前位置: 首页 > news >正文

Selenium + Python 自动化测试07(滑块的操作方法)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

本篇文章主要讲述如何操作滑块。

         目前很多系统登录或者注册的页面都有滑块相关的验证,selenium 中对滑块的基本操作采用了元素的拖曳的方式。需要用到Actiochains模块。下面以携程网站注册的页面来说明对应的用法。

1、携程网址及对应页面

网址:https://passport.ctrip.com/user/reg/home

然后点击:同意并继续,可以看到滑块

2、编写代码执行滑块动作

1)查看滑块的元素

如下图所示:

#slideCode > div.cpt-drop-box > div.cpt-bg-bar    元素的CSS定位,滑动区域

#slideCode > div.cpt-drop-box > div.cpt-drop-btn  元素的CSS定位,滑块按钮

当然以上定位方式也可以xpath或者别的。参考下面代码

driver.get("https://passport.ctrip.com/user/reg/home")driver.maximize_window()time.sleep(3)#点击同意并继续driver.find_element_by_xpath("//*[@id='agr_pop']/div[3]/a[2]").click()#滑块的元素slider = driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-drop-btn")print(slider.size['width'])print(slider.size['height'])#滑块区域的元素slide_range=driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-bg-bar")print(slide_range.size['width'])print(slide_range.size['height'])#拖动滑块ActionChains(driver).drag_and_drop_by_offset(slider,slide_range.size['width'],-slider.size['height'] ).perform()print("滑动成功")time.sleep(3)

使用上面的代码,可以看到下面的弹窗,说明滑块正常通过了。如下图所示:

2)ActionChains(driver).drag_and_drop_by_offset()

函数使用方法参考:

使用ActionChains(driver).drag_and_drop_by_offset方法时,‌需要传入三个参数:‌目标元素、‌X轴偏移量和Y轴偏移量。‌

这个方法允许你控制鼠标在页面上的移动,‌模拟真实的用户操作。举例:

# 假设我们有一个元素element,‌我们想要将其拖动到当前位置的右侧100像素,‌向下50像素

start_element = driver.find_element_by_id("element_id")  # 替换为实际的元素定位代码

ActionChains(driver).drag_and_drop_by_offset(start_element, 100, 50).perform()

不理解的话再对照看看上面的例子。

每天进步一点点,加油!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 记一次Windows使用virtualbox作为容器作为开发环境运行idea,致每一位windows下的开发者
  • Android网络安全:如何防止中间人攻击
  • 微前端场景下如何做样式隔离?
  • IP地址封装类(InetAddress类)
  • 清华大学在感前光学计算方向获得进展
  • 疯狂Java讲义_08_泛型
  • 2024年云计算企业CRM应用与选型研究报告
  • 如何看待云原生数据库一体化的技术趋势?
  • 文件属性获取
  • Java 并发集合:阻塞队列集合介绍
  • .NET8使用VS2022打包Docker镜像
  • Xshell8最新版体验(业界最强大的SSH连接工具)
  • ZPScan网络扫漏工具-子命令说明
  • C#如何解决引用类型的“深度”克隆问题
  • 细说MCU检测按键输入的外部中断和修改HAL_GPIO_EXTI_IRQHandler() 的实现方法
  • 【Amaple教程】5. 插件
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • bearychat的java client
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Docker下部署自己的LNMP工作环境
  • extract-text-webpack-plugin用法
  • Fabric架构演变之路
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript设计模式与开发实践系列之策略模式
  • Leetcode 27 Remove Element
  • mysql中InnoDB引擎中页的概念
  • node 版本过低
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Python_OOP
  • SpringBoot 实战 (三) | 配置文件详解
  • vue自定义指令实现v-tap插件
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 基于webpack 的 vue 多页架构
  • 简单易用的leetcode开发测试工具(npm)
  • 双管齐下,VMware的容器新战略
  • 微信小程序开发问题汇总
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​第20课 在Android Native开发中加入新的C++类
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (BFS)hdoj2377-Bus Pass
  • (C#)一个最简单的链表类
  • (C)一些题4
  • (day6) 319. 灯泡开关
  • (Oracle)SQL优化技巧(一):分页查询
  • (八)Spring源码解析:Spring MVC
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (状压dp)uva 10817 Headmaster's Headache
  • 、写入Shellcode到注册表上线
  • .h头文件 .lib动态链接库文件 .dll 动态链接库