3 鼠标&键盘操作

当我们进行手动测试的时候,有的时候我们可能会实现双击,拖动等操作,在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。

1.鼠标操作
导入类
from selenium.webdriver import ActionChains        # 导入类
ActionChains(driver)                            # 调用 ActionChains()类, 将浏览器驱动 driver 作为参数传入。
perform() 执行所有 ActionChains 中存储的行为(接在ActionChains类之后)
右击 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