精华内容
下载资源
问答
  • 程序通过记录用户拖动滑块的轨迹,这一串的轨迹数据采用模式识别的手段就可以判断出这是否是真人在操作。滑块验证通常需要使滑块按照正常的加速度进行拖动,停靠在一个合适的位置,在使用selenium时通常需要设置一个...

    在我们登录账号中常常会遇到各种验证码,如图片验证码,拖动滑块验证.....

    滑块验证码只需要用户使用鼠标将滑块从某个位置拖动到另一个位置即可。程序通过记录用户拖动滑块的轨迹,这一串的轨迹数据采用模式识别的手段就可以判断出这是否是真人在操作。

    滑块验证通常需要使滑块按照正常的加速度进行拖动,停靠在一个合适的位置,在使用selenium时通常需要设置一个合适的滑动加速度来使自己伪装的更像人类用户而不是计算机。

    from selenium.webdriver import ActionChains这个类基本能够满足我们所有对鼠标操作的需求。

    我们使用企查查这个网站来实践一下

    from selenium.webdriver import ActionChains

    from selenium import webdriver

    import time

    driver=webdriver.Chrome()

    driver.get("https://www.qichacha.com/user_login")

    time.sleep(1)

    首先需要选中滑块,才能进行下一步操作

    driver.find_element_by_xpath('//*[@id="normalLogin"]').click()

    time.sleep(1)

    huakuai=driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')

    需要自己设置一个函数来生成一个轨迹来模拟人类用户行为

    def get_track(distance): # distance为传入的总距离

    # 移动轨迹

    track=[]

    # 当前位移

    current=0

    # 减速阈值

    mid=distance*4/5

    # 计算间隔

    t=0.2

    # 初速度

    v=1

    while current

    if current

    # 加速度为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

    拖动滑块进行测试,由于测试没有输入账号密码...

    drag_and_drop(source, target)拖拽

    drag_and_drop_by_offset(source, xoffset, yoffset)将目标拖动到指定的位置

    def move_to_gap(slider,tracks): # slider是要移动的滑块,tracks是要传入的移动轨迹

    ActionChains(driver).click_and_hold(slider).perform()

    for x in tracks:

    ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform()

    time.sleep(0.5)

    ActionChains(driver).release().perform()

    if __name__ == '__main__':

    move_to_gap(huakuai,get_track(340))

    后面是全部代码,由于没有缺口位置,不需要设置到合适停止到正确的位置

    from selenium.webdriver import ActionChains

    from selenium import webdriver

    import time

    driver=webdriver.Chrome()

    driver.get("https://www.qichacha.com/user_login")

    time.sleep(1)

    driver.find_element_by_xpath('//*[@id="normalLogin"]').click()

    time.sleep(1)

    huakuai=driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')

    def get_track(distance): # distance为传入的总距离

    # 移动轨迹

    track=[]

    # 当前位移

    current=0

    # 减速阈值

    mid=distance*4/5

    # 计算间隔

    t=0.2

    # 初速度

    v=1

    while current

    if current

    # 加速度为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(driver).click_and_hold(slider).perform()

    for x in tracks:

    ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform()

    time.sleep(0.5)

    ActionChains(driver).release().perform()

    if __name__ == '__main__':

    move_to_gap(huakuai,get_track(340))

    展开全文
  • 我这边是前端提供了随机生成缺口的位置,只适合部分人先定位到需要移动的滑块位置,应为我这边随机生成的缺口位置是display:none无法获取元素所以要先修改成block才能读取这里有一个坑就是如果你直接移动该元素的话...

    我这边是前端提供了随机生成缺口的位置,只适合部分人

    先定位到需要移动的滑块位置,

    应为我这边随机生成的缺口位置是display:none无法获取元素所以要先修改成block才能读取

    这里有一个坑就是如果你直接移动该元素的话他无法读取到你移动的位置的,你要先点击该滑块触发后才能获取到你要移动的距离

    下面贴上代码:

    time.sleep(5)

    # 定位到滑块位置

    a = obtener_elemeentos("login", "滑块位置", 1)

    b = obtener_elemeentos("login", "滑块位置", 2)

    slider = login.browser.find_element(a,b)

    # 修改display为block

    js =obtener_elemeentos("login", "缺口js", 2)

    # 执行

    login.browser.execute_script(js)

    # 读取随即后生产的距离

    time.sleep(1)

    c=obtener_elemeentos("login", "缺口距离", 1)

    d = obtener_elemeentos("login", "缺口距离", 2)

    distance = login.browser.find_element(c,d).text

    print(distance)

    while isElementExist(a,b):

    time.sleep(2)

    distance = login.browser.find_element(c, d).text

    print(distance)

    # 按住鼠标不动

    login.Action.click_and_hold(slider).perform()

    # 拖动到坐标后然后松手

    login.Action.drag_and_drop_by_offset(slider, int(distance), 0).perform()

    本人是读取的是excel里面的参数,你们要把obtener_elemeentos这个函数改一下,写的比较菜欢迎大佬指点

    展开全文
  • 我正在尝试使用Selenium(特别是在Python中)将双句柄滑块的句柄拖动到特定值。 我的问题是滑块手柄没有移动到我想要的值。 例如,我试图将最小句柄移动到'1'但它移动到'0.95'。滑块细节:分钟。 值:0(位于像素:0)...

    我正在尝试使用Selenium(特别是在Python中)将双句柄滑块的句柄拖动到特定值。 我的问题是滑块手柄没有移动到我想要的值。 例如,我试图将最小句柄移动到'1'但它移动到'0.95'。

    滑块细节:

    分钟。 值:0(位于像素:0)

    最大。 值:“20”(位于像素:285)

    滑块宽度:300像素

    滑块增量:0.05(0,0.05,0.1,1.05,...,19.95,20)

    这是我的代码片段,添加了评论:

    def drag_handle_using_mouse(self, handle, new_val):

    actions = ActionChains(self.driver)

    slider_width = Decimal(self.slider.size["width"] - handle.size["width"]) # The max. val is always located 15 pixels left from the max. value

    pixel_increments = Decimal(slider_width / ((self._max_handle_val - self._min_handle_val) / self._increments))

    cur_val = self.get_handle_value(handle)

    no_of_pixels_to_move = Decimal(pixel_increments * (new_val - cur_val) / self._increments)

    actions.drag_and_drop_by_offset(handle, no_of_pixels_to_move, 0).perform()

    actions.reset_actions()

    可能很重要的是,滑块的类型为“ng5-slider”( https://www.npmjs.com/package/ng5-slider ),因为我在谷歌找到的解决方案都没有帮助我

    另外,当我在“0.95”和“1”的chrome检查器中查看计算面板中的“左”值时,我看到相同的像素值: 对于值:“0.95” 对于值:“1”所以,我假设像素值是四舍五入的,因此我无法猜测计算增量的公式是什么。

    提到的滑块的HTML代码:

    0

    >20

    0

    19.6

    0   1.95

    有人知道我的代码有什么问题吗? 似乎我错误地计算了像素增量,但我不明白问题出在哪里。

    重要提示:正如我在代码片段中所述,我从滑块宽度减去'15',因为最大值。 值(在这种情况下:“20”)位于像素号中。 '285',滑块宽度为'300'。 我试图在没有这个减法的情况下执行我的代码,但它仍然不起作用。

    展开全文
  • selenium解决鼠标拖动滑块慢的问题 通常情况下使用 move_by_offset移动鼠标会有明显的拖动间隔,将 \venv\Lib\site-packages\selenium\webdriver\common\actions\pointer_input.py文件里的DEFAULT_MOVE_DURATION变量...

    selenium解决鼠标拖动滑块慢的问题

    通常情况下使用 move_by_offset移动鼠标会有明显的拖动间隔,将 \venv\Lib\site-packages\selenium\webdriver\common\actions\pointer_input.py文件里的DEFAULT_MOVE_DURATION变量调小即可纵享丝滑~~

    DEFAULT_MOVE_DURATION设置为10时,可以解决极验 怪物吃了拼图 请重试 问题。

    展开全文
  • # 我用的是这个代码,可是拖动了是拖动失败的 ``` Actions action = new Actions(driver); action.clickAndHold(button); shoe.sleep(2000); action.moveByOffset(250, 0).perform(); shoe.sleep...
  • 今天在研究python+selenium自动化登录碰到拖动滑块匹配图片时遇到“no module PIL”的问题,解决如下; 在python高版本中,PIL 库包含在 Pillow 库中,所以我们只需要下载pillow即可。 在python目录下,执行安装...
  • 前言在爬取数据中,不可避免的会遇到各种验证,上一篇文章说了二维码验证的办法示例本篇文章讲的是遇到滑块验证的解决方案,本例是在一个b2b的网站内遇到的滑块验证重点真实人的拖动操作,是y轴和x都有变化的。...
  • # 水平向右自动模拟移动滑块from time import sleepfrom selenium.webdriver import Chromefrom selenium.webdriver import ActionChainsfrom selenium.webdriver.support.wait import WebDriverWaitdriver = Chrome...
  • 写京东登录的自动化测试用例的时候...于是我们可以怎么使用selenium+python来完成模拟拖动→自动化验证呢? 一开始的想法是:计算空缺的位置出现规律,每次遇见的时候做判断,然后将空缺的位置提取出来,让拼图块...
  • 破码之拖动滑块

    2017-08-18 15:39:00
    #破码之拖动滑块 # encoding:utf-8 import selenium import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By ...
  • java Selenium 滑块验证破解

    千次阅读 2019-11-20 15:35:05
    目标 前两天发现个好玩的工具Selenium,可以模拟人进行游览器操作,赶紧趁热打铁玩个小demo,滑块验证现在使用普遍,就是为了验证是否...现在是第二个问题如何拟人化的拖动滑块,滑的太快不行,太慢也不行,这里我提...
  • selenium模拟国航滑块验证码

    千次阅读 2019-04-29 11:36:24
    本文就是大致讲解下使用selenium进行这个滑块验证码的拖动问题。 临时起意,看到了中国国际航空公司的官网,想试着采集下航班信息,发现官网是有不少难度的,操作也比较麻烦。 于是就用 fiddler 找了下国航的app...
  • 破解无缺口滑块验证码 在学习完selenium 简单操作之后,继续...破解这种无缺口滑块首先要找到滑块位置,根据selenium选择器去选择要拖动的Slider,选中之后查看要拖动的px,执行 dragAndDropBy方法即可。 (1)F...
  • 恰巧自己也在学习selenium,就想试一试能不能实现自动拖动滑块。 2.2 度娘查找 由于自己没多少思路,第一选择就是问度娘,终于找到一篇文章,该文章使用C#实现了该功能,并提到需要定位滑块元素在网页和桌面的...
  • 本文为大家分享了python2.7+selenium2实现淘宝滑块自动认证的具体代码,供大家参考,具体内容如下1.编译环境操作系统:win7;...恰巧自己也在学习selenium,就想试一试能不能实现自动拖动滑块。2.2...
  • selenium+pynput破解滑块验证码

    千次阅读 2019-11-26 16:24:09
    目前很多网站都会采用滑块验证码作为反爬,由于selenium的特征值太多,很容易被识别出来,因此需要更加底层的技术–pynput模拟鼠标的点击、拖动行为 pynput.mouse:包含控制和监控鼠标或者触摸板的类。 pynput....
  • 1.编译环境 操作系统:win7;语言:python2.7+selenium2;...恰巧自己也在学习selenium,就想试一试能不能实现自动拖动滑块。 2.2 度娘查找 由于自己没多少思路,第一选择就是问度娘,终于找到一篇文章,该文
  • 于是查找selenium拖动滑块的方法,但是发现运行后都是如下报错 一番百度后,确认这是网站的反爬机制造成了。 于是想办法破解反爬,终于是淘宝爬虫之自动登录 (此处要向原作者致敬)中找到了解决办法,即:修改...
  • 新人新手,初次接触selenium+Java自动化测试,试着分享点学习中的东西。在做自动化的时候,有时会遇见图形化校验的...3.拖动滑块。1.定位滑块控件,如下图定位外面的控件也行,定位里面小的那个也行//外WebElement...
  • 实现原理:使用selenium模拟登录,获取验证码有缺口的验证图片及没有缺口的图片,然后比对俩个图片的每一个像素点,知道了滑块需要拖动多远的距离,使用行为链进行拖动。这样就实现了模拟登录bilibili咯。 from ...
  • 解决滑块验证问题(selenium, opencv)

    千次阅读 2019-01-16 09:24:42
    本文环境配置: 系统=>windows10:64位 工具=>PyCharm:2018.1.4 语言=>...selenium ...本次主要是使用selenium模拟滑动验证 ...最终目标:实现自动点击滑块,并且拖动完成验...
  • 最近在写自动化测试,在网上搜了很多拖动,发现都是拖动完之后不触发拖动完成事件,下面的代码是针对上面的这种滑块解锁登录的。 //输入用户名 driver.findElement(By.name("username")).sendKeys(...
  • 基于selenium进行动作链由于最近很多人聊到滑动验证码怎么处理,所以决定自己动手试一下。做一个东西前。我们首先要对这个东西的操作过程有一个大概的了解。打开验证码页面。鼠标放到拖动按钮上对拖动按钮进行拖动...
  • QQ邮箱登录很可能需要拖动滑块进行验证,这里当做练习selenium,实现模拟拖动滑块 import sys import time import cv2 import os import requests import random import numpy as np from PIL import Image as Im ...
  • 如下图,利用selenium模拟拖动滑块完成验证 关键问题 我们知道selenium可以定位到用户名和密码,用send_keys可以实现输入账号密码。同样我们可以用selenium定位到滑块,用click_and_hold方法可以实现拖动滑块。 ...
  • Selenium实现元素的拖拽(java版)

    万次阅读 2016-05-12 09:22:52
    selenium实现页面元素拖动滑块验证
  • selenium+java破解极验滑动验证码

    千次阅读 2017-08-15 12:52:30
    分析验证码素材图片混淆原理,并采用selenium模拟人拖动滑块过程,进而破解验证码。 人工验证的过程 打开威锋网注册页面(https://passport.feng.com/?r=user/register)移动鼠标至小滑块,一张完整的图片会...
  • selenium是爬虫常用的手段之一,绕过各种js懒加载,模拟用户操作,拖动滑块验证码等,如某宝就有selenium 检测,当使用selenium去某宝或其他网站进行爬虫或者模拟登陆时,会出现滑动验证码,并且无论是用...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

selenium拖动滑块