selenium模拟鼠标操作

方法列表

perform(self):        ---执行链中的所有动作
reset_actions(self):     ---清除存储在远端的动作
click(self, on_element=None):   ---鼠标左键单击
click_and_hold(self, on_element=None):    --鼠标左键单击,不松开
context_click(self, on_element=None):       ---鼠标右键单击
double_click(self, on_element=None):        ---鼠标左键双击
drag_and_drop(self, source, target):        ---拖拽到某个元素后松开
drag_and_drop_by_offset(self, source, xoffset, yoffset):        ---拖拽到某个坐标后松开
key_down(self, value, element=None):        ---某个键盘键被按下
key_up(self, value, element=None):          ---松开某个键
move_by_offset(self, xoffset, yoffset):     ---鼠标移动到某个坐标
move_to_element(self, to_element):          ---鼠标移动到某个元素
move_to_element_with_offset(self, to_element, xoffset, yoffset):        ---移动到距某个元素(左上角)多少的位置
release(self, on_element=None):     ---在某元素上松开鼠标
send_keys(self, *keys_to_send):     ---发送某些值到当前焦点元素
send_keys_to_element(self, element, *keys_to_send):     ---发送某些值到指定元素

基本用法

链式写法
ActionChains(driver).click(clk_btn).context_click(right_btn).perform()
 
分步写法
# 补全化action
actions = ActionChains(driver)
# 装载单击动作
actions.click()
# 装载右击动作
actions.context_click()
# 执行所有被装载的动作
actions.perform()

代码实例

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
 
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(10)
 
# 右击
right_click = driver.find_element_by_xpath('//a[@name="tj_trnews"]')
ActionChains(driver).context_click(right_click).perform()

下拉滚动

方法一:
使用js脚本直接操作

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

方法二:
将滚动条手动到指定的位置,这种方法更常用

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

方法三:
发送TAB键

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

方法四:
前段时间使用robotframe work框架时,selenium2library里面有一个非常好用的功能Focus,会自动定位到元素,研读一下源码:

def focus(self, locator):
        """Sets focus to element identified by `locator`."""
        element = self._element_find(locator, True, True)
        self._current_browser().execute_script("arguments[0].focus();", element)

从源码中我们可以看到,此方法与我们在python自己写的方法二)一致,工具给我们做了封装。

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值