前言
登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点。
有些直接拖到最最右侧就可以了,本篇讲下使用 selenium web 自动化的时候如何滑动解锁。
滑动解锁场景
看下图,是我本地写的一个 slider.html 网页
除了输入账号和密码,还需将滑块拖动到最右端才能解锁
最后才去点登陆按钮
ActionChains 滑动滑块
查看 ActionChains 使用源码,相关介绍
ActionChains是一种自动化低级交互的方法,比如鼠标移动、鼠标按钮操作、按键和上下文菜单交互。这对于执行更复杂的操作(如悬停和拖放)非常有用
在调用ActionChains对象上的操作方法时,这些操作存储在ActionChains对象的队列中。调用perform()时,事件将按其顺序激发排队等候。
使用上有2种实例,一种可用于链模式
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
另外一种方式操作可以一个接一个排队,然后执行
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
不管是哪种方式,动作都是按照调用的顺序执行的,一个接一个另一个。
实现代码
selenium 里面滑动滑块需用到鼠标事件,回放下刚才操作的慢动作:按住 >> 按钮 -> 往右移动鼠标到最右端 -> 释放鼠标 -> 解锁成功
于是会用到click_and_hold move_by_offset release 这三个方法,最后用 perform() 执行
from selenium