|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def get_track(distance): # 人为滑动是先慢 中快 后慢
- """
- 根据偏移量获取移动轨迹
- :param distance: 偏移量
- :return: 移动轨迹列表
- """
- track = []
- current = 0 # 当前位移
- mid = distance * 4 / 5 # 设定一个阈值进行改变加速度
- t = 1 # 计算间隔
- v = 0 # 初速度
- while current < distance:
- if current < mid:
- a = 1 # 加速度为正1
- else:
- a = -2 # 加速度为负2
- v0 = v # 初速度v0
- v = v0 + a * t # 当前速度v = v0 + at
- # 移动距离x = v0t + 1/2 * a * t^2
- move = v0 * t + 1 / 2 * a * t * t
- current += move # 当前位移
- track.append(round(move)) # 加入轨迹
- track.append(distance-sum(track))
- return track
- browser = webdriver.Chrome()
- action = ActionChains(browser)
- #.....
- #.....
- dic = get_track(220)
- for track in dic:
- action.move_by_offset(xoffset=track, yoffset=0).perform()
- time.sleep(1)
- action.release().perform()
复制代码
用selenium进行滑块验证的时候 每当action执行一次move操作 滑块先往右移动一段距离之后自动往回拉一段距离 滑块整个过程就在左右左右移动 
这里去掉perform()就行了
action.move_by_offset(xoffset=track, yoffset=0)
或者循环中新建ActionChains对象
- for track in dic:
- action.move_by_offset(xoffset=track, yoffset=0).perform()
- action = ActionChains(browser)
- time.sleep(1)
- action.release().perform()
复制代码
|
|