1.selenium的ActionChains类使用场景
有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains
2. ActionChains方法列表
- click(on_element=None) ——单击鼠标左键
- click_and_hold(on_element=None) ——点击鼠标左键,不松开
- context_click(on_element=None) ——点击鼠标右键
- double_click(on_element=None) ——双击鼠标左键
- drag_and_drop(source, target) ——拖拽到某个元素然后松开
- drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
- key_down(value, element=None) ——按下某个键盘上的键
- key_up(value, element=None) ——松开某个键
- move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
- move_to_element(to_element) ——鼠标移动到某个元素
- move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
- perform() ——执行链中的所有动作
- release(on_element=None) ——在某个元素位置松开鼠标左键
- send_keys(keys_to_send) ——发送某个键到当前焦点的元素
- send_keys_to_element(element, keys_to_send) ——发送某个键到指定元素
3. ActionChains使用示例
action = ActionChains(self.driver)
hk_button = self.driver.find_element(By.XPATH, '//*[@id="nc_1_n1z"]')
for x in listx:
action.drag_and_drop_by_offset(hk_button, xoffset=x, yoffset=random.randint(0, 2)).perform()
time.sleep(0.6)
time.sleep(1)
self.driver.refresh()
time.sleep(1)
具体的使用ActionChains解决滑块拖动的问题可以看看我之前的selenium的文章,里面的讲解很详细