selenium的键盘操作

一、键盘操作


1、sent_keys(str):传入文本
sent_keys() 传入的参数为 String 类型的文本时,主要是在在输入框中输入文本内容时使用。

 

# 创建浏览器实例对象
driver = webdriver.Chrome()
# 使用id定位搜索框
input = driver.find_element_by_id("search")
# 搜索框中输入“Python”
input.send_keys("Python")
# 也可以使用一行代码
# driver.find_element_by_id("search").send_keys("Python")


2、sent_keys(Keys):键盘操作
所有的键盘操作都是通过 sent_key() 里面改变参数实现的。在使用键盘按键方法前需要先导入 Keys 包:

from selenium.webdriver.common.keys import Keys

我们来看下 Keys 类中有哪些键盘按钮。

class Keys(object):
"""
Set of special keys codes.
"""

NULL = '\ue000'
CANCEL = '\ue001' # ^break
HELP = '\ue002'
BACKSPACE = '\ue003'
BACK_SPACE = BACKSPACE
TAB = '\ue004'
CLEAR = '\ue005'
RETURN = '\ue006'
ENTER = '\ue007'
SHIFT = '\ue008'
LEFT_SHIFT = SHIFT
CONTROL = '\ue009'
LEFT_CONTROL = CONTROL
ALT = '\ue00a'
LEFT_ALT = ALT
PAUSE = '\ue00b'
ESCAPE = '\ue00c'
SPACE = '\ue00d'
PAGE_UP = '\ue00e'
PAGE_DOWN = '\ue00f'
END = '\ue010'
HOME = '\ue011'
LEFT = '\ue012'
ARROW_LEFT = LEFT
UP = '\ue013'
ARROW_UP = UP
RIGHT = '\ue014'
ARROW_RIGHT = RIGHT
DOWN = '\ue015'
ARROW_DOWN = DOWN
INSERT = '\ue016'
DELETE = '\ue017'
SEMICOLON = '\ue018'
EQUALS = '\ue019'

NUMPAD0 = '\ue01a' # number pad keys
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
MULTIPLY = '\ue024'
ADD = '\ue025'
SEPARATOR = '\ue026'
SUBTRACT = '\ue027'
DECIMAL = '\ue028'
DIVIDE = '\ue029'

F1 = '\ue031' # function keys
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'

META = '\ue03d'
COMMAND = '\ue03d'

Keys 作为类名,类属性名使用大写字母,这些属性被赋予的值为对应的键盘的ue编码。当需要调用键盘操作时,直接使用 类名.属性名,例举几个常用的键盘操作,例如:

# 删除键
sent_keys(Keys.BACK_SPACE)
# 空格键
sent_keys(Keys.SPACE)
# tab 键
sent_keys(Keys.TAB)
# delete 键
sent_keys(Keys.DELETE)
# + 键
sent_keys(Keys.ADD)
# enter 键
sent_keys(Keys.ENTER)
# shift 键
sent_keys(Keys.SHIFT)
# ctrl+A:全选
sent_keys(Keys.CONTROL, 'a')
# ctrl+C:复制
sent_keys(Keys.CONTROL, 'c')
# ctrl+V:粘贴
sent_keys(Keys.CONTROL, 'v')
# ctrl+X:剪切
sent_keys(Keys.CONTROL, 'x')
# F1 键
sent_keys(Keys.F1)
# 数字9 键
sent_keys(Keys.NUMPAD9)

【小练习】

在输入框中输入文本 我要学 Selenium 自动化测试 ,然后全部选中该文本,再删除。

# -*- coding: utf-8 -*-

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 创建 Chrome 浏览器实例对象
driver = webdriver.Chrome()
# 访问百度首页地址
driver.get('https://www.baidu.com/')
# 使用 name 定位搜索框
search = driver.find_element_by_name('wd')
# 搜索框中输入 “我要学 Selenium 自动化测试”
search.send_keys('我要学 Selenium 自动化测试')
# 全选搜索框中的文本内容
search.send_keys(Keys.CONTROL, 'a')
# 为了看清楚全选中文本强制等待 3 秒
sleep(3)
# 将搜索框中的内容剪切删除
search.send_keys(Keys.CONTROL, 'x')
# 为了看清楚删除文本内容强制等待 3 秒
sleep(3)
# 退出关闭浏览器
driver.quit()

 

 

二、鼠标操作

鼠标的操作都包含在 ActionChains 类中,所以要模拟鼠标操作是首先要导入该包:

from selenium.webdriver.common.action_chains import ActionChains
1
ActionChain中常用的鼠标操作:

# 单击鼠标左键
click(ele)
# 单击鼠标右键
context_click(ele)
# 双击鼠标左键
double_click(ele)
# 拖动某个元素后松开
drag_and_drop(source, target)
# 鼠标悬停在一个元素上
move_to_element(ele)
# 在某个元素上单击鼠标左键,不松开
click_and_hold(ele)
# 在某个元素上松开鼠标左键
release()
# 执行上速鼠标操作
perform()

对 ActionChains 类进行实例化对象操作,调用操作(元素)方法,再执行 perform() 方法。

【用法小示例】

导入需要的包

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

再初始化一些实例对象

# 创建浏览器实例对象
driver = webdriver.Chrome()
# 创建鼠标实例化对象
chains = ActionChains(driver)
# 访问商城网站
driver.get("http://39.98.138.157/shopxo/index.php")
# 最大化浏览器窗口
driver.maximize_window()

click() :鼠标左键 点击 操作
两种用法,第一种,带参数 click(ele):

# 先通过 xpath 定位登录按钮
login = driver.find_element_by_xpath("//button[text()='登录']")
# 鼠标左键单击登录按钮
chains.click(login).perform()

第二种,不带参数 click():

driver.find_element_by_xpath("//button[text()='登录']").click()

context_click(ele):鼠标右键 单击 操作
# 通过 xpath 定位用户名
username = driver.find_element_by_xpath("//input[@name='accounts']")
# 再鼠标右键单击输入框
chains.context_click(username).perform()

double_click(ele):鼠标左键 双击 操作
# 通过 xpath 定位用户名
username = driver.find_element_by_xpath("//input[@name='accounts']")
# 再鼠标双击全选输入框内容
chains.double_click(username).perform()

move_to_element(ele):鼠标 悬停
# 通过 xpath 定位登录文本
login = driver.find_element_by_xpath("//div[@class='member-login']/a[text()='登录']")
# 再让鼠标悬停到该元素上
chains.move_to_element(login).perform()

drag_and_drop(source, target):拖动某个元素后松开
# 先定位被拖拽的元素
source = driver.find_element_by_xpath('//*[@id="doc-topbar-collapse"]/ul/li[1]/a')
# 再定位目标元素
target = driver.find_element_by_xpath("//input[@name='accounts']")
# 最后调用 drag_and_drop 方法将定位到的source元素拖拽到目标元素target
chains.drag_and_drop(source, target)

————————————————
版权声明:本文为CSDN博主「喵小鹿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33580192/article/details/121051142

posted on 2022-05-25 14:46  ClareBaby01  阅读(944)  评论(0编辑  收藏  举报