3 鼠标&键盘操作
当我们进行手动测试的时候,有的时候我们可能会实现双击,拖动等操作,在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
1.鼠标操作
导入类
from selenium.webdriver import ActionChains # 导入类
ActionChains(driver) # 调用 ActionChains()类, 将浏览器驱动 driver 作为参数传入。
右击 context_click()
from selenium import webdriver
# 导入动作链
from selenium.webdriver import ActionChains
import time
url = 'http://www.baidu.com'
driver = webdriver.Firefox()
driver.get(url)
# 创建动作池对象
acobj = ActionChains(driver)
# 定位到百度的logo图片
el_lg = driver.find_element_by_id('lg')
# 添加邮件点击动作并执行
acobj.context_click(el_lg).perform()
# print (dir(acobj))
time.sleep(5)
driver.close()
双击 double_click()
from selenium import webdriver
# 导入动作链
from selenium.webdriver import ActionChains
import time
url = 'http://www.baidu.com'
driver = webdriver.Firefox()
driver.get(url)
# 创建动作对象
acobj = ActionChains(driver)
# 定位到视频元素
el = driver.find_element_by_css_selector('a.mnav:nth-child(1)')
# 执行双击操作
acobj.double_click(el).perform()
time.sleep(5)
driver.quit()
鼠标悬停 move_to_element()
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
url = 'https://www.jd.com/'
driver = webdriver.Firefox()
driver.get(url)
#获取左侧种类元素列表
mylist = driver.find_elements_by_css_selector('li.cate_menu_item')
# print (mylist)
# 创建动作动作对象
acobj = ActionChains(driver)
for el in mylist:
acobj.move_to_element(el).perform()
time.sleep(3)
driver.close()
2.键盘事件
Keys()类提供了键盘上几乎所有按键的方法。 前面了解到, send_keys()方法可以用来模拟键盘输入, 除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# print (dir(Keys))
url = 'https://cn.bing.com/'
driver = webdriver.Firefox()
driver.get(url)
el = driver.find_element_by_id('sb_form_q')
el.send_keys('selenium')
# 全选并删除
el.send_keys(Keys.CONTROL,'a')
time.sleep(3)
el.send_keys(Keys.CONTROL,'x')
# 退格并回车
el.send_keys('seleniumm')
time.sleep(3)
el.send_keys(Keys.BACK_SPACE)
time.sleep(3)
el.send_keys(Keys.ENTER)
time.sleep(5)
driver.quit()
以下为常用的键盘操作:
- 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+V)
- send_keys(Keys.F1) 键盘 F1
- ……
- send_keys(Keys.F12) 键盘 F12