操作元素(键盘和鼠标事件)
前言
在前面的几篇中重点介绍了一些元素的定位方法,定位到元素后,接下来就是需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件。
有些web界面的选项菜单需要鼠标悬停在某个元素上才能显示出来(如百度页面的设置按钮)。
一、简单操作
1.点击(鼠标左键)页面按钮:click()
2.清空输入框:clear()
3.输入字符串:send_keys()
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com") # implicitly_wait是隐式等待,作用全局的 driver.implicitly_wait(10) driver.find_element_by_id("kw").clear() # 清空输入框 driver.find_element_by_id("kw").send_keys("Python自动化") # 输入字符串 driver.find_element_by_id("su").click() #点击
二、submit提交表单
1.在前面百度搜索案例中,输入关键字后,可以直接按回车键搜索,也可以点搜索按钮搜索。
2.submit()一般用于模拟回车键
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com") # implicitly_wait是隐式等待,作用全局的 driver.implicitly_wait(10) driver.find_element_by_id("kw").send_keys("Python自动化") # 输入字符串 # submit()模拟enter键提交表单 driver.find_element_by_id("su").submit()
三、键盘操作
1.selenium提供了一整套的模拟键盘操作事件,前面submit()方法如果不行的话,可以试试模拟键盘事件
2.模拟键盘的操作需要先导入键盘模块:from selenium.webdriver.common.keys import Keys
3.举个栗子:模拟enter键,可以用send_keys(Keys.ENTER)
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("https://123.sogou.com") # implicitly_wait是隐式等待,作用全局的 driver.implicitly_wait(10) driver.find_element_by_css_selector("input[autocomplete=off]").send_keys("selenium") # 模拟enter键作回车按钮 driver.find_element_by_css_selector("input[autocomplete=off]").send_keys(Keys.ENTER)
4.其它常见的键盘操作
键盘F1到F12:send_keys(Keys.F1)把F1改成对应的快捷键 复制Ctrl+C:send_keys(Keys.CONTROL,'c') 粘贴Ctrl+V:send_keys(Keys.CONTROL,'v') 全选Ctrl+A:send_keys(Keys.CONTROL,'a') 剪切Ctrl+X:send_keys(Keys.CONTROL,'x') 制表键Tab: send_keys(Keys.TAB)
这里只是列了一些常用的,当然除了键盘事件,也有鼠标事件。
四、鼠标悬停事件
1.鼠标不仅仅可以点击(click),鼠标还有其它的操作,如:鼠标悬停在某个元素上,鼠标右击,鼠标按住某个按钮拖动
2.鼠标事件需要先导入模块:from selenium.webdriver.common.action_chains import ActionChains
perform() 执行所有ActionChains中的行为
举个栗子:move_to_element() 鼠标悬停
3.这里以百度页面设置按钮为例
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("https://baidu.com") driver.implicitly_wait(10) # 鼠标悬停在搜索设置按钮上 mouse = driver.find_element_by_link_text("设置") ActionChains(driver).move_to_element(mouse).perform()
4.除了常用的鼠标悬停事件外,还有
右击鼠标:context_click()
双击鼠标:double_click()
依葫芦画瓢,替换上面案例中对应的鼠标事件就可以了
selenium提供了一整套完整的鼠标和键盘行为事件,功能还是蛮强大滴。