鼠标操作
现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击、双击、悬停、甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供。
1.鼠标右击操作
from selenium import webdriver # 引入ActionChains类 from selenium.webdriver.common.action_chains import ActionChains from time import sleep driver=webdriver.Firefox() driver.get("http://www.baidu.com") #...... # 定位到要右击的元素 element=driver.find_element_by_css_selector("#kw") #右击操作 ActionChains(driver).context_click(element).perform() #......
- from selenium.webdriver import ActionChains,导入提供鼠标操作的ActionChains类
- ActionChains(driver),调用ActionChains()类,将浏览器驱动driver作为参数传入
- context_click(element),context_click()方法用于模拟鼠标右键操作,在调用时需要制定元素定位
- perform(),执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作
2.鼠标悬停
#...... # 定位到要悬停的元素 element=driver.find_element_by_css_selector("#kw") #鼠标悬停 above=driver.find_element_by_css_selector(".pf") ActionChains(driver).move_to_element(above).perform() #......
3.鼠标双击操作
#...... # 定位到要双击的元素 element=driver.find_element_by_css_selector("#kw") #双击操作 ActionChains(driver).double_click(element).perform() #......
4.鼠标拖放操作
#...... # 定位元素的原位置 element=driver.find_element_by_id("xx") # 定位元素要移动的目标位置 target==driver.find_element_by_id("xx") # 执行元素的拖放操作 ActionChains(driver).drag_and_drop(element,target).perform() #......
drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放
- source:鼠标移动的源元素
- target:鼠标释放的目标元素
键盘事件
Keys()类提供了键盘上几乎所有按键的方法。
from selenium import webdriver # 引入Key模块 from selenium.webdriver.common.keys import Keys from time import sleep driver=webdriver.Firefox() driver.get("http://www.baidu.com/") # 输入框输入内容 driver.find_element_by_css_selector("#kw").send_keys("pythonn") # 删除多输入的一个n driver.find_element_by_css_selector("#kw").send_keys(Keys.BACK_SPACE) # 输入空格键+“教程” driver.find_element_by_css_selector("#kw").send_keys(Keys.SPACE) driver.find_element_by_css_selector("#kw").send_keys("教程") # ctrl+a全选输入框内容 driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a') # ctrl+c复制输入框内容 driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'c') # ctrl+x剪切输入框内容 driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'x') # ctrl+v粘贴内容到输入框 driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'v') # 通过回车键代替单击操作 driver.find_element_by_css_selector("#su").send_keys(Keys.ENTER) driver.quit()
在使用键盘方法前需要先导入Keys类
以下为常用的键盘操作
代码 | 含义 |
send_keys(Keys.BACK_SPACE) | 删除键(BackSpace) |
send_keys(Keys.SPACE) | 空格键(Space) |
send_keys(Keys.TAB) | 制表键(Tab) |
send_keys(Keys.ESCAPE) | 回退键(Esc) |
send_keys(Keys.eNTER) | 回车键(Enter) |
send_keys(Keys.CONTROL,'a') | 全选(Ctrl+A) |
send_keys(Keys.CONTROL,'c') | 复制(Ctrl+C) |
send_keys(Keys.CONTROL,'x') | 剪切(Ctrl+X) |
send_keys(Keys.CONTROL,'v') | 粘贴(Ctrl+(Ctrl+A)) |
send_keys(Keys.F1) | 键盘F1 |
...... | |
send_keys(Keys.F12) | 键盘F12 |