IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium控制滑块验证码(带注释) -> 正文阅读

[开发测试]selenium控制滑块验证码(带注释)

一、准备

下载浏览器驱动 chromedriver.exe (需要和Chrome浏览器版本号对应)

下载地址: https://npm.taobao.org/mirrors/chromedriver/
根据日期查找
根据日期查找
notes.txt 里查看支持的版本
notes.txt 里查看支持的版本
这个支持Chrome 95版本
支持Chrome 95版本

下载python包:selenium

pip install selenium

二、使用步骤

1.引入库

代码如下(示例):

from selenium import webdriver # 控制ChromeDriver并允许驱动浏览器
from selenium.webdriver import ActionChains # 模拟鼠标操作
from selenium.webdriver.common.by import By # By类
from selenium.webdriver.support.ui import WebDriverWait # 导入显式等待类
from selenium.webdriver.support import expected_conditions as EC # 导入期望场景类

其他包及作用可以参考 https://blog.csdn.net/kyaaaa1/article/details/87534998

2.初始化浏览器

代码如下(示例):

# 有web界面
options = webdriver.ChromeOptions() 
chromedriver_path = r'C:\Users\pc\Downloads\chromedriver_win32\chromedriver.exe' # 自己下载的chromedriver.exe 所在路径
options.add_argument("start-maximized")  # 窗口最大化
options.add_argument("--disable-blink-features=AutomationControlled")  # 去掉webdriver痕迹
# options.add_argument('disable-infobars') # 已废弃
options.add_experimental_option("useAutomationExtension", False)  # 禁用 使用自动扩展
options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 去掉'自动控制'提示

browser = webdriver.Chrome(options=options, executable_path=chromedriver_path) # 初始化

3.模拟轨迹

根据需要移动的距离生成步长list

def get_track(distance):  # distance为传入的总距离
      # 移动轨迹
      track = []
      # 当前位移
      current = 0
      # 减速阈值
      mid = distance * 4 / 5
      # 计算间隔
      t = 0.2
      # 初速度
      v = 1

      while current < distance:
          if current < mid:
              # 加速度为2
              a = 4
          else:
              # 加速度为-2
              a = -3
          v0 = v
          # 当前速度
          v = v0 + a * t
          # 移动距离
          move = v0 * t + 1 / 2 * a * t * t
          # 当前位移
          current += move
          # 加入轨迹
          track.append(round(move))
      return track

鼠标拖动方法

def move_to_gap(slider, tracks):  # slider是要移动的滑块,tracks是要传入的移动轨迹
      ActionChains(self.browser).click_and_hold(slider).perform() # 滑块元素上执行按下鼠标左键,并保持
      for x in tracks:
          print('移动步长:', x)
          ActionChains(self.browser).move_by_offset(xoffset=x, yoffset=0).perform() # 根据坐标(相对位置)移动鼠标
      time.sleep(0.31)

      ActionChains(self.browser).release().perform()  # 最后松开鼠标左键

实验代码

url = 'https://www.geetest.com/show'
browser.get(url) # 打开网站
time.sleep(2)

# 通过find_element_by_xpath方法 找到//div[@class="tab-item tab-item-1"]元素 点击
browser.find_element_by_xpath('//div[@class="tab-item tab-item-1"]').click()
time.sleep(2)

# 点按呼出缺口
browser.find_element_by_xpath('//div[@aria-label="点击按钮进行验证"]').click()
time.sleep(2)

# 获取滑块元素
huakuai = browser.find_element_by_xpath('//div[@class="geetest_slider_button"]')
time.sleep(3)
xoffset = input('手动测量需要移动的距离:\n') # 使用截图工具计算滑块到缺口的距离(像素)
track_list = get_track(xoffset) # 获取步长
move_to_gap(slider, track_list) # 移动滑块
 

待完善

1.自动获取滑块所需移动的距离

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 17:11:21  更:2021-10-01 17:11:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:40:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码