selenium给我们提供了一个类来处理这类事件——ActionChains。
from selenium.webdriver import ActionChains
ActionChains可以对需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等进行操作。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) ——发送某个键到指定元素
demo小测试(进入百度搜索自动化,双击按钮选择文字)
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
driver = webdriver.Firefox()
driver.maximize_window()
# driver.implicitly_wait(40)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("自动化")
x=driver.find_element_by_id("kw")
sleep(2)
ActionChains(driver).double_click(x).perform()
sleep(2)
如图
from selenium.webdriver.common.keys import Keys
send_keys() 输入框输入内容
——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.BACK_SPACE) 向左删除一个字符 ——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.SPACE) 输入空格
——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)
send_keys(Keys.CONTROL,‘a‘) ctrl+a 全选输入框的内容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a‘)
send_keys(Keys.CONTROL,‘x‘) ctrl+x 剪切输入框的内容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)
send_keys(Keys.CONTROL,‘v‘) ctrl+v 粘贴到输入框
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)
send_keys(Keys.ENTER) 回车代替点击
——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)
send_keys(Keys.TAB) 制表键(Tab)
——如:driver.find_element_by_id("id").send_keys(Keys.TAB)
send_keys(Keys.ESCAPE) 回退键(Esc)
——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)
send_keys(Keys.CONTROL,‘c‘) 复制
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)
跟鼠标操作类似,只是要注意使用方法
一个小的demo(全键盘操作复制自动化粘贴2次搜索)如下
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.maximize_window()
# driver.implicitly_wait(40)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("自动化")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"c")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
driver.find_element_by_id("kw").send_keys(Keys.TAB)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
以上就是Selenium键盘和鼠标的自动化操作了。