Web自动化必会技能-鼠标键盘模拟操作

元素交互

我们日常在使用电脑进行网页操作时,最常用的莫过于
1.点击(适用于任何元素)
2.发送(适用于文本和内容可编辑的元素)
3.清除(适用于文本和内容可编辑的元素)
4.提交(仅适用于表单
5.选择(下拉框,多选项等select元素)

这些方法会在操作前,执行两件事
1.如果它确定元素在视窗之外, 则会将元素滚动到视图中, 特别是将元素底部与视窗底部对齐.
2.确保元素在执行操作之前是可交互的 . Selenium发送一个JavaScript执行命令, 如果确定某个元素不在视窗中, 不显示, 不可键盘交互, 或不可指针交互, 则返回一个元素不可交互错误.

点击

点击是我们使用最多的一种方式,执行在元素中央,通常.click()
示例:driver.find_element(By.ID, "LX").click()

发送

通常我们使用send_keys(“XXX”),当然这只能帮助我们输入值,要发送还需要导入一个key包来模拟我们键盘的确定键

from selenium.webdriver.common.keys import Keys

示例:driver.find_element(By.ID, "q").send_keys("hello" + Keys.ENTER)

清除

元素清除命令重置元素的内容. 这要求元素可编辑, 且可重置. 这意味着元素是具有文本类型的表单的输入元素或具有内容可编辑属性的元素. 如果不满足这些条件, 将返回无效元素状态错误.
示例:driver.find_element(By.ID, "LX").clear()

提交

在Selenium 4中, 不再通过单独的端点以及脚本执行的方法来实现. 因此, 建议不要使用此方法, 而是单击相应的表单提交按钮(.click()).

选择

首先定位一个 select 元素, 然后借助其初始化一个Select 对象. 请注意, 从 Selenium 4.5 开始, 无法针对禁用的 select>元素构建 Select 对象.

 select_element = driver.find_element(By.NAME, 'selectomatic')
 select_object = Select(select_element)

有三种方法可以从上述元素中的选项:

# 选项索引
select_object.select_by_index(1)
# 选项value属性值
select_object.select_by_value('value')
# 选项文本
select_object.select_by_visible_text('Bread')

如果要取消选择,有四种操作

# 选项索引
select_object.deselect_by_index(1)
# 选项value属性值
select_object.deselect_by_value('value')
# 选项文本
select_object.deselect_by_visible_text('Bread')
# 取消所有被选择的选项
select_object.deselect_all()

一些 select>元素允许选择多个选项. 可以通过使用以下命令确定您
的 select元素是否允许多选:

does_this_allow_multiple_selections = select_object.is_mutiple

ActionChains

ActionChains是Python Selenium库中的一个类,用于处理在页面上执行操作的动作链。
它提供了一些方法,如move_to_element()、click()、send_keys()等,可以将这些方法组合成一个动作链,并在页面上执行。
ActionChains的主要作用是模拟人的操作行为,例如鼠标移动、鼠标单击、拖动等,可以用于实现自动化测试中的一些操作。
由于每个动作都是通过链式调用来完成的,所以这些动作被封装成一个完整的动作序列之后,需要通过调用perform()方法来执行这些动作。

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

driver = webdriver.Chrome()
#实例化ActionChains
action = ActionChains(driver)

Keyboard actions(键盘事件)

用于与网页交互的任何关键输入设备的表示。
只有两个操作可以用键盘完成:按下一个键和释放一个按下的键。除了支持ASCII字符之外,每个键盘键都有一个表示,可以按下或释放指定的序列。

Keys

示例:复制粘贴

#如果是Mac,则保存COMMAND键,否则保存CONTROL键。
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
#创建ActionChains对象
ActionChains(driver)\
.send_keys("Hello world!")\
.send_keys(Keys.ARROW_LEFT)\   #将光标移动到输入字符串的左侧
.key_down(Keys.SHIFT)\      #将Shift键按下
.send_keys(Keys.ARROW_UP)\   #将光标向上移动一行
.key_up(Keys.SHIFT)\     #将Shift键释放
.key_down(cmd_ctrl)\    #将命令键按下。
.send_keys("Bye")\     #调用send_keys("Bye"),模拟输入字符串"Bye"
.key_up(cmd_ctrl)\     #释放命令键,并调用perform()方法执行所有操作
.perform()

Mouse actions(鼠标事件)

一般来说我们鼠标就三个功能,按下按钮、释放按钮、移动鼠标。Selenium
提供了最常见的方式组合这些操作的方便方法

Click and hold (点击并按住不放)

clickable = driver.find_element(By.ID, "click")
ActionChains(driver)\
.click_and_hold(clickable)\
.perform()

Click and release (点击然后松开–左键)

一般来说用我们的.click()就行了

 clickable = driver.find_element(By.ID, "click")
ActionChains(driver)\
.click(clickable)\
.perform()

Context Click (单击右键)

 clickable = driver.find_element(By.ID, "click")
ActionChains(driver)\
.context_click(clickable)\
.perform()

Double click (双击)

双击两次左键

 clickable = driver.find_element(By.ID, "click")
ActionChains(driver)\
.double_click(clickable)\
.perform()

Move to element (移动鼠标)

此方法将鼠标移动到元素的视图内中心点。这也被称为“悬停”。注意元素必须在视窗中,否则命令会出错

hoverable = driver.find_element(By.ID, "hover")
ActionChains(driver)\
.move_to_element(hoverable)\
.perform()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有被蠢哭到

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值