首页 > 其他分享 >selenium之滑块验证

selenium之滑块验证

时间:2023-06-30 16:46:28浏览次数:28  
标签:webdriver 滑块 验证 selenium find tracks options browser

登录时,会有遇到滑块验证码,一般有2种:1.拖到最右边;2.拖到指定位置。

本文只介绍下第一种情况。 

第二种情况,可以参考:https://zhuanlan.zhihu.com/p/624497402

例如第一次登录lazada网站需要滑块验证:https://sellercenter.lazada.com.ph/apps/seller/login,怎么解决这个问题呢?

 可以通过2个步骤来解决:

① 根据偏移量获取移动轨迹,下面函数中distance 为滑块从左到右的距离

def get_tracks(distance):
"""
根据偏移量获取移动轨迹
:param distance:偏移量
:return:移动轨迹
"""
# 移动轨迹
tracks = []
# 当前位移
current = 0
# 减速阈值
mid = distance * 4 / 5
# 计算间隔
t = 0.2
# 初速度
v = 0
while current < distance:
if current < mid:
# 加速度为正10.值大则速度快
a = 10
else:
# 加速度为负3
a = -3
# 初速度v0
v0 = v
# 当前速度
v = v0 + a * t
# 移动距离
move = v0 * t + 1 / 2 * a * t * t
# 当前位移
current += move
# 加入轨迹
tracks.append(round(move))
return tracks
②拖动滑块,下面函数中,slider为滑块的定位,tracks为拖动轨迹,从函数1中获取
def move_to_gap(slider, tracks):
"""
拖动滑块
:param slider: 滑块
:param tracks: 轨迹
:return:
"""
# 模拟滑动滑块
action = ActionChains(browser)
action.click_and_hold(slider).perform()
# action.reset_actions() # 清除之前的action
for i in tracks:
action.move_by_offset(xoffset=i, yoffset=0).perform()
time.sleep(0.5)
action.release().perform()

另外,在模拟登录时,发现滑块拖动了,结果网站验证失败,提示如下图。这个是因为在浏览器开发者模式中,看到window.navigator.webdriver显示为true,正常打开的显示为false
此时需要在启动浏览器时,加上参数options
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled") # 就是这一行告诉chrome去掉了webdriver痕迹,令navigator.webdriver=false,极其关键
# 还有其他options配置,此处和问题无关,略去
browser = webdriver.Chrome(options=options) # 打开浏览器

 

具体代码如下:

 

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled") # 就是这一行告诉chrome去掉了webdriver痕迹,令navigator.webdriver=false,极其关键
# 还有其他options配置,此处和问题无关,略去

browser = webdriver.Chrome(options=options) # 打开浏览器
browser.maximize_window() # 浏览器最大化
browser.get('https://sellercenter.lazada.com.ph/apps/seller/login') # 输入网址
time.sleep(3)
browser.find_element(By.XPATH, "//input[@id='account']").click()
browser.find_element(By.XPATH, "//input[@id='account']").send_keys("aaaaaaa")
browser.find_element(By.XPATH, "//input[@id='password']").click()
browser.find_element(By.XPATH, "//input[@id='password']").send_keys("bbbb")
browser.find_element(By.XPATH, "//button[@data-spm='home_next']").click()
time.sleep(5)

iframe = browser.find_element(By.XPATH, "//iframe[@id='baxia-dialog-content']")
browser.switch_to.frame(iframe) #滑块在iframe中,需要切换
# browser.find_element(By.XPATH, "//a[@id='bx-feedback-btn']").click()
time.sleep(3)
slider = browser.find_element(By.XPATH, "//span[@id='nc_1_n1z']") #滑块

tracks = get_tracks(260)
move_to_gap(slider,tracks)

参考:
https://blog.csdn.net/shclbear/article/details/124807195
https://blog.csdn.net/weixin_41712499/article/details/127488038

标签:webdriver,滑块,验证,selenium,find,tracks,options,browser
From: https://www.cnblogs.com/jintianniu/p/17517196.html

相关文章

  • element新增自定义rules验证
    data中添加属性//电话验证  constvalidatePass=(rule,value,callback)=>{   letvalueStr=value+''   if(valueStr.length!=11||!valueStr.startsWith('1')){    callback(newError('电话必须为1开头的11位数字!'))   }......
  • 使用easy-captcha验证码出现javax. script ScriptEngine.eval(String)" because "engi
    1.问题java项目使用  ArithmeticCaptcha  验证码,出现javax.scriptScriptEngine.eval(String)"because"engine"isnulArithmeticCaptchacaptcha=newArithmeticCaptcha(111,36);<dependency><groupId>com.github.whvcse</groupId>......
  • node使用jsonwebtoken生成token与验证是否过期
    场景我们可以使用cookie,session,token来做鉴权。下面我们来看一下,如何使用token来做鉴权jwt.sign的简单介绍npminstalljsonwebtoken下载使用jsonwebtoken生成token的基本语法。jwt.sign(payload,secretOrPrivateKey,[options,callback])第1个参数payload:可以......
  • 全栈测试开发系列----WebDriver API及对象识别技术(二)---selenium验证码处理的多种实现
    前言对于测试人员而言,不管是进行性能测试还是自动化测试,验证码的处理都是棘手的存在,在WEB应用中,大部分系统在用户登录的时候都要求用户输入验证码,且验证码的种类繁多,如纯数字、纯字母、汉子组合、数学题运算、滑动图标、图片、短信、邮箱、语音等。既然要实现验证码的处......
  • bp神经网络交叉验证算法和确定最佳隐含层节点个数matlab 程序
    bp神经网络交叉验证算法和确定最佳隐含层节点个数matlab程序,直接运行即可。数据excel格式,注释清楚,效果清晰,一步上手。"使用交叉验证算法和确定最佳隐含层节点个数的bp神经网络,可以通过编写注释清晰、效果清晰的Matlab程序来处理Excel格式的数据。这个方法可以帮助您快速上手,实现......
  • 锂电池SOC估计基于二阶RC模型的扩展卡尔曼滤波估算SOC 验证工况:HPPC 和 1C放电
    锂电池SOC估计基于二阶RC模型的扩展卡尔曼滤波估算SOC验证工况:HPPC 和1C放电原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/673020484916.html......
  • tool_Selenium IDE(录制浏览器操作的工具)
    一、安装工具打开chrome浏览器->扩展程序->访问Chrome应用商店 搜索seleniumide后,点击SeleniumIDE,添加至Chrome 点击浏览器右上角插件按钮,将SeleniumIDE固定,点击Se图标就可打开工具 ......
  • Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过
    先打开浏览器,再链接操作1、打开浏览器时添加以下参数:--remote-debugging-port=9222--user-data-dir="C:\\selenium\\ChromeProfile"2、selenium中设置浏览器选项,通过上面设置的9222端口连接浏览器:fromselenium.webdriver.chrome.optionsimportOptionschrome_option......
  • GlobalProtect配合privacyIDEA对接ldap做二步验证
    #Authorhttps://cnblogs.com/id404GlobalProtect的和privacyIDEA的安装部署及基础设置可参考前一篇博文https://www.cnblogs.com/id404/p/17484847.html PaloAlto设备在前一篇文章的基础不需要修改,本文重点在privacyIDEA的配置上 一、对接ldap   点击TestLDAP......
  • 阿里的Java开发规范插件验证
    阿里最近有点“烦”,但是作为技术人,更多关注的还是技术层面,其他的就交给有关机构和时间来证明。最近有项工作借鉴了阿里的Java开发规范,为了能让其落地,需要验证方案,而这个Java开发规范提供了对应的验证插件,因此从使用层面,了解一下。目前该插件实现了开发手册中的的53条规则,大部分基于......