selenium之鼠标键盘操作

1、鼠标操作

  关于鼠标的操作封装在ActionChains()类里,所以需要提前导入ActionChains()类;perform() 执行所有 ActionChains 中存储的行为(接在ActionChains类之后)

  导入ActionChains 类:from selenium.webdriver import ActionChains

  格式:ActionChains(浏览器).[行为(需要操作的元素)].perform()

  1.1、鼠标右击与双击操作(单击即click())

    右击操作:ActionChains(浏览器).context_click(需要右击的定位好的元素).perform()

    双击:ActionChains(浏览器).double_click(需要右击的定位好的元素).perform()

    代码实例:

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 设置浏览器最大化
driver.maximize_window()

# 右击操作:
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位元素loge元素
d = driver.find_element_by_css_selector('#s_lg_img')
# 对元素进行鼠标右击操作
'''
ActionChains(driver):使用动作链类对浏览器进行操作
context_click(d):使用动作链类对定位好的d元素进行右击
perform():执行动作链类的操作'''
ActionChains(driver).context_click(d).perform()
time.sleep(2)

# 双击操作:
# 定位元素
ee = driver.find_element_by_link_text('新闻')
# 双击元素
ActionChains(driver).double_click(ee).perform()
time.sleep(2)
# 关闭浏览器
driver.quit()

  1.2、鼠标悬停操作

    悬停:ActionChains(driver).move_to_element(元素).perform()

# 导入相关的模块
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
# 创建浏览器对象、设为最大化屏幕
driver = webdriver.Firefox()
driver.maximize_window()
# 访问京东
url = 'https://www.jd.com/'
driver.get(url)

# 定位需要鼠标悬停单个元素
xuan = driver.find_element_by_css_selector('li.cate_menu_item:nth-child(1) > a:nth-child(1)')
# 悬停操作
ActionChains(driver).move_to_element(xuan).perform()
time.sleep(3)

# 获取一组悬停的元素,并且一个个遍历
xuans_list = driver.find_elements_by_css_selector('li.cate_menu_item')
# 遍历悬停操作
for el in xuans_list:
    ActionChains(driver).move_to_element(el).perform()
    time.sleep(2)

# 关闭浏览器
driver.quit()

2、键盘操作(按键名称需要大写、组合键里的参数需要小写)

  Keys()类提供了键盘上几乎所有按键的方法,原理与鼠标相似;使用键盘操作前需先导入Keys()类,然后配合send_keys()使用

  导入Keys()类:from selenium.webdriver.common.keys import Keys

  格式:元素.send_keys(Keys.键盘名称) 或组合键方式:元素.send_keys(Keys.CONTROL,'x')

# 导入需要的模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 创建浏览器对象设置为最大化
driver = webdriver.Firefox()
driver.maximize_window()
# 访问百度
driver.get('http:www.baidu.com')

# 定位输入框
srk = driver.find_element_by_id('kw')
# 输入框输入内容
srk.send_keys('周润发')
time.sleep(1)
# 全选输入框内容
srk.send_keys(Keys.CONTROL,'a')
time.sleep(1)
# 剪切输入框内容
srk.send_keys(Keys.CONTROL,'x')
time.sleep(1)
# 粘贴已经剪切的内容
srk.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 全选删除内容
srk.send_keys(Keys.CONTROL,'a')
time.sleep(1)
srk.send_keys(Keys.BACK_SPACE)
time.sleep(1)
# 重新输入内容
srk.send_keys('刘德华')
time.sleep(1)
# 全选复制输入框内容
srk.send_keys(Keys.CONTROL,'a')
time.sleep(1)
srk.send_keys(Keys.CONTROL,'c')
time.sleep(1)
srk.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 使用enter键代替点击搜索动作
srk.send_keys(Keys.ENTER)
time.sleep(3)
# 关闭浏览器 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.NUMPAD3) 输入键盘数字3(数字及文中 输入一般直接打字即可,此方法较少用)
  • 。。。。。。。。。。。。。

  各个按键输入都是同一套路,照搬即可

原文地址:https://www.cnblogs.com/will-wu/p/13476122.html