使用Python Selenium 实现拖拽动作时动作不流畅

出现了标题问题,没有达到预期的效果。上网也查找一些有没有相关的内容的说明和解决方案,但是大多数解决方案与我这个情况好像不相关。特此将我自己的解决方案记录下来,供人参考。着急可以直接看 结果

环境

  • macOS 10.14.4
  • python 3.7.2
  • selenium 3.141.0
  • chrome 76.0.3809.132(64位)
  • webdriver是和chrome相匹配的版本

问题

最近由于工作原因,需要自动登录jd的页面。但是最近发现有时登录时,经常弹出滑块让你进行拖拽验证。理论上直接破解js的加密函数是可以做到的,但是太费时间了。处于简单的目的,于是使用 python 的 selenium 库进行用户模拟操作处理。

在一切就绪后,发现了一个问题,就是拖拽的动作很不流畅,感觉是一顿一顿的移动,根本无法达到“拟人”的操作效果。

查看主要拖拽部分的代码,感觉也没有什么问题。主要代码如下:

# 选中要拖拽的元素
slider_el = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'xxx')))
# 然后‘点击并按住’。
ActionChains(self.driver).click_and_hold(slider_el).perform()

# tracks 是生成一些列的X轴位移距离数组。例如:[0,0,0,1,1,1,2,5,7, ...]
# 实现正向滑动
for track in tracks:
    yoffset_random = random.uniform(-2, 4)
    # xoffset、yoffset在函数内部都会被转为整数的。
    ActionChains(self.driver).move_by_offset(xoffset=track, yoffset
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值