selenium-04-模拟鼠标键盘操作

模拟鼠标键盘操作

初始化对象(注意传的参数是driver不是element)- 定位要操作的元素 - 模拟鼠标、键盘、滚轮操作 - perform()提交操作 - 释放所有Actions:
注:如果不释放的话,会默认记住上述的步骤,⽐如:前⾯按了Shift,如果不释放的话,再按其他字母就是大写,释放了则是⼩写。

初始化对象

ActionChains(driver)

模拟鼠标操作

1)click(el):点击鼠标左键
2)click_and_hold (点击并按住不放):
3)click_and_release (点击然后松开):
4)context_click (单击右键):
5)double_click (双击):
6)move_to_element (移动到元素):
7)在元素上拖放
#在源元素上单击并按住,移动到⽬标元素的位置,然后释放⿏标
draggable = driver.find_element(By.ID, “draggable”)
droppable = driver.find_element(By.ID, “droppable”)
ActionChains(driver).drag_and_drop(draggable, droppable).perform()

模拟键盘 需要用到Keys库

1)key_down(按下键位):
2)key_up (松开键位):
3)send_keys (发送按键信息到当前焦点元素):
4)向指定元素发送信息
text_input = driver.find_element(By.ID, “textInput”)
send_keys_to_element(text_input, “abc”)

Send_keys(Keys.CONTROL,'a’) 全选(Ctrl+A)
Send_keys(Keys.CONTROL,‘C’) 复制(Ctrl+C)
Send_keys(Keys.CONTROL,’X’) 剪切(Ct+X)
Sen_ keys(Keys.CONTROL,’V’) 粘贴(Ctr+V)
Send_keys(Keys.ENTER) 回车键
Send_keys(Keys.BACK_SPACE) 删除键
Send_keys(Keys.SPACE) 空格键
Send_keys(Keys.TAB) 制表键
Send_keys(Keys.ESCAPE) 回退键

模拟滚轮操作:需要selenium4.2及以上版本,只⽀持google浏览器

1)scroll_to_element(): 滚动到元素:
2)scroll_by_given_amount() 按给定数值滚动:

footer = driver.find_element(By.TAG_NAME, “footer”)
delta_y = footer.rect[‘y’]
ActionChains(driver).scroll_by_amount(0, delta_y).perform()

PS:这个rect,就是显示元素在浏览器⻚⾯中的坐标位置,具体值,可以在开发者⼯具⾥,查看元素右侧的Properties
信息中的:offsetTop (⾼)和 offsetWidth (宽)

释放所有actions

ActionBuilder(driver).clear_actions()

举例

# coding = utf-8
# Author:dan.zhang
# Date:2023/11/14


from selenium import webdriver
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get("http://novel.hctestedu.com/")
driver.maximize_window()

action = ActionChains(driver)
el = driver.find_element(By.ID, "searchKey")
action.click(el).send_keys("huace").key_down(Keys.SHIFT).send_keys("qiye").key_up(Keys.SHIFT).send_keys(
    "web").key_up(Keys.SHIFT).perform()
# 释放所有actions
ActionBuilder(driver).clear_actions()

# 获取输入的文本信息
text = el.get_attribute("value")
print("获取输入的文本信息: ", text)

driver.quit()

ActionChains(driver).操作.perform()
ActionBuilder(driver).clear_actions()
鼠标
click(el)
click_and_hold(el)
click_and_release(el)
context_click(el)
double_click(el)
move_to_element(el)
drag_and_drop(el1,el2)
键盘
key_up()
key_down()
send_keys()
send_keys_to_element(el,“###”)
Keys库
Keys.CONTROL,‘A’
Keys.CONTROL,‘X’
Keys.CONTROL,‘V’
Keys.CONTROL,‘C’
Keys.SHIFT
Keys.ENTER
Keys.BACK_SPACE
Keys.SPACE
Keys.TAB
Keys.ESCAPE

你可能感兴趣的:(Web自动化,selenium,测试工具)