0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Selenium模拟怎么滑块拖动

汽车电子威廉希尔官方网站 来源:Python数据分析之旅 作者: cauwfq 2023-02-24 15:05 次阅读

poYBAGP4YSyAB7oMAACs82W6uHQ551.png

一.项目背景

滑块验证码,即用户使用鼠标将滑块从某个位置拖动到另一个位置,服务器通过用户拖
动滑块的轨迹来判断当前用户是否为人类,本文主要介绍如何利用Selenium框架interwetten与威廉的赔率体系
滑块
移动。

二.实现过程

1.构建加速度函数

#获取距离值
def get_tracks(distance):
    '''
    模拟人的滑动行为,先匀加速后匀减速
    匀变速基本公式
    v=v0+at
    s=vot+1/2at2
    '''
    
    #初速度
    v=0
    #设置时间
    t=0.3
    #存储每段距离值
    tracks=[]
    #当前距离
    current=0
    #中间位置为4/5距离处
    mid=distance*4/5
    while current
2.构建请求头参数

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.chrome import options


#初始化选项
opt=options.Options()
#设置user-agent
ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
#添加user-agent
opt.add_argument(f"user-agent={ua}")
# 去掉提示:Chrome正收到自动测试软件的控制
opt.add_argument('disable-infobars')
#关闭开发者模式
opt.add_experimental_option("useAutomationExtension", False)
#以键值对的形式加入参数
opt.add_experimental_option("excludeSwitches", ['enable-automation'])
#禁用启用Blink运行时的功能
opt.add_argument('--disable-blink-features=AutomationControlled'


3.模拟滑块移动

#请求网络
browser=webdriver.Chrome(r'./chromedriver.exe',chrome_options=opt)
#窗口最大化
browser.maximize_window()
#访问豆瓣官网
browser.get('https://www.douban.com')

#切换到iframe子页面
login_frame=browser.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe')
#获取登录按钮
browser.switch_to.frame(login_frame)

#密码登录
browser.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]').click()
#用户名
browser.find_element_by_xpath('//*[@id="username"]').send_keys('xxx')
#密码
browser.find_element_by_xpath('//*[@id="password"]').send_keys('xxx')
#点击登录
browser.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
#睡眠4秒钟
time.sleep(4)


#获取下一个iframe
auth_frame=browser.find_element_by_xpath('//*[@id="tcaptcha_iframe"]')
browser.switch_to.frame(auth_frame)

#获取滑块
element=browser.find_element_by_xpath('//*[@id="tcaptcha_drag_button"]')
#在滑块上暂停
ActionChains(browser).click_and_hold(on_element=element).perform()
#拖动滑块180像素
ActionChains(browser).move_to_element_with_offset(to_element=element,xoffset=182,yoffset=0).perform()
#拖动剩余像素
tracks=get_tracks(19)
#遍历梅一段距离
for track in tracks:
    #滑块移动响应距离
    ActionChains(browser).move_by_offset(xoffset=track,yoffset=0).perform()
#休息1s中
time.sleep(1)
#释放滑块
ActionChains(browser).release().perform()

poYBAGP4YZyAIzDCAAGDPd1YJeI472.png


被豆瓣后台检测到我们用程序来模拟,具体原因和代码我们后期分享,感谢大家阅读。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9129

    浏览量

    85344
  • 框架
    +关注

    关注

    0

    文章

    403

    浏览量

    17477
  • 轨迹
    +关注

    关注

    0

    文章

    46

    浏览量

    9267
收藏 人收藏

    评论

    相关推荐

    【安富莱原创】【STemWin教程】第55章 SLIDER-滑块控件

    GUIBulder建立滑块控件 55. 4 总结 55.1控件介绍 滑块控件的常见用途是:使用滑动条来修改各项数值。滑块包含滑动条和滑动条旁边的刻度标记。 在拖动滑动条时,这些刻度标
    发表于 05-20 10:53

    第55章 SLIDER-滑块控件

    55. 4 总结55.1 滑块控件介绍 滑块控件的常见用途是:使用滑动条来修改各项数值。滑块包含滑动条和滑动条旁边的刻度标记。 在拖动滑动条时,这些刻度标记可规定光标按指定间距移动。
    发表于 10-18 11:20

    滑块删除对话框滑块值会怎么变化?

    我想问一个滑块的问题,你在滑动滑块的时候,它的值是会变化的,那么当删除这个对话框(滑块创建在这个对话框上面)以后,滑块的值会怎么变化呢?从我自己试验的结果来看,这个值好像是随机的。 希
    发表于 05-09 01:16

    自动化测试工具Selenium怎么工作?

    Selenium工作原理
    发表于 09-20 12:36

    常用Selenium封装方法有哪些?

    Python中,常用Selenium方法封装(5)
    发表于 05-01 17:38

    Python常用Selenium方法封装是什么

    Python中,常用Selenium方法封装(4)
    发表于 05-18 12:03

    如何在Python中使用Selenium

      Python是一种高级的面向对象的脚本语言。Python使用简单,容易理解。与其他任何编程语言相比,它的语法复杂性较低。而Selenium支持Python,因此可以与Selenium一起用于测试
    发表于 09-08 18:17

    使用handleDragEvent和handleClickEvent时,点击和拖动的按钮和滑块等小部件不起作用怎么解决?

    您好,当我使用handleDragEvent和handleClickEvent时,需要点击和拖动的按钮和滑块等小部件不再起作用。我怎么解决这个问题?
    发表于 01-05 08:08

    广州大彩串口屏工程威廉希尔官方网站 笔记-进度条控件和滑块控件应用

    适合经济型、基本型、物联型、86盒系列等串口屏产品。 进度条控件,可以比较形象地对数据进行显示反映外部上传到屏幕的数据真实现状。 滑块控件,通过对滑块拖动,可以对外部设备进行控制,比如控制灯的亮度、控制电动
    发表于 05-25 14:03 5次下载

    一个openharmony滑块/搜索栏案例

    一个openharmony滑块/搜索栏,但不同:-) 依赖项 { 实现‘ io 。开放和谐。tpc 。第三库:ohos - slidr:1.0 。2 ’ } final Slidr slidr
    发表于 04-01 09:12 1次下载

    Selenium在自动化中有何用处

      Selenium是一个开源的自动化测试工具,可以轻松自动化Web应用程序。它还能够自动化我们的功能测试任务。Selenium是一组软件工具,为 测试自动化提供不同级别的支持。Selenium包括
    的头像 发表于 12-09 15:05 2006次阅读

    Selenium模拟怎么滑块拖动-2

    滑块验证码,即用户使用鼠标将滑块从某个位置拖动到另一个位置,服务器通过用户拖动滑块的轨迹来判断当前用户是否为人类,本文主要介绍如何利用
    的头像 发表于 02-24 15:12 1850次阅读
    <b class='flag-5'>Selenium</b><b class='flag-5'>模拟</b>怎么<b class='flag-5'>滑块</b><b class='flag-5'>拖动</b>-2

    Arduino电动相机滑块

    电子发烧友网站提供《Arduino电动相机滑块.zip》资料免费下载
    发表于 07-10 14:55 0次下载
    Arduino电动相机<b class='flag-5'>滑块</b>

    Python中使用selenium的准备工作

    定义 Selenium是一个用于Web应用程序测试的自动化测试工具。使用Selenium可以驱动浏览器执行特定的动作,如点击、下拉等操作,还可以获取页面信息,断言页面是否如预期。在工作中我们可以用
    的头像 发表于 11-15 11:12 385次阅读
    Python中使用<b class='flag-5'>selenium</b>的准备工作

    GUI中Scale移动滑块代码

    Scale 移动滑块 Scale(移动滑块)用于在指定的数值区间,通过滑块的移动来选择值 实操代码 """scale 滑块的使用测试【示例】使用 Scale(移动
    的头像 发表于 11-26 16:48 1161次阅读
    GUI中Scale移动<b class='flag-5'>滑块</b>代码