写点什么

软件测试学习笔记丨 Selenium 键盘鼠标事件 ActionChains

作者:测试人
  • 2024-05-29
    北京
  • 本文字数:1523 字

    阅读完需:约 5 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22515

说明:本篇博客基于 selenium 4.1.0

ActionChains 说明

ActionChains 都是 selenium 的一个模块,提供模拟鼠标动作和键盘动作的功能

ActionChains 使用方法

# 步骤1:实例化一个ActionChains动作容器actions = ActionChains(driver, 250)
# 步骤2:往动作容器中依次添加动作actions.click(ele_click) # 调用的动作都会添加到动作容器中actions.click_and_hold(ele_drag).release(ele_item2) # 链式添加动作。每个动作返回值为容器对象,因此支持链式连续添加
# 步骤3:执行动作actions.perform()
复制代码

ActionChains 动作列表

import timefrom selenium import webdriverfrom selenium.webdriver import ActionChains, Keysfrom selenium.webdriver.common.by import By

driver = webdriver.Chrome()driver.implicitly_wait(5)
# 创建动作容器actions = ActionChains(driver, 250)

# 等待n = 3actions.pause(n) # 插入在动作中,强制暂停n秒

# 鼠标点击driver.get('http://sahitest.com/demo/clicks.htm')ele_click = driver.find_element(By.CSS_SELECTOR, '[value="click me"]')ele_dclick = driver.find_element(By.CSS_SELECTOR, '[value="dbl click me"]')ele_rclick = driver.find_element(By.CSS_SELECTOR, '[value="right click me"]')
actions.click(ele_click) # 单击,ele_click非必传actions.double_click(ele_dclick) # 双击,ele_click非必传actions.context_click(ele_click) # 右键点击,ele_click非必传

# 鼠标移动driver.get("https://www.baidu.com/")ele_set = driver.find_element(By.ID, "s-usersetting-top")
actions.move_to_element(ele_set) # 移动鼠标到元素x, y = 30, 60actions.move_by_offset(x, y).context_click() # 以浏览器左上角为原点,鼠标向下向右移动(x,y)距离actions.move_to_element_with_offset(ele_set, x, y) # 以元素左上角为原点,鼠标向下向右移动(x,y)距离
# 鼠标拖动driver.get("http://sahitest.com/demo/dragDropMooTools.htm")ele_drag = driver.find_element(By.ID, "dragger")ele_item1 = driver.find_element(By.XPATH, "//div[text()='Item 1']")ele_item2 = driver.find_element(By.XPATH, "//div[text()='Item 2']")ele_item3 = driver.find_element(By.XPATH, "//div[text()='Item 3']")
actions.drag_and_drop(ele_drag, ele_item1) # 拖动元素ele_drag到ele_item1actions.click_and_hold(ele_drag).release(ele_item2) # 点住元素ele_drag,在ele_item1处释放鼠标actions.click_and_hold(ele_drag).move_to_element(ele_item3).release() # 点住元素ele_drag,移动鼠标到ele_item1处,释放鼠标x, y = 30, 60actions.drag_and_drop_by_offset(ele_drag, x, y) # 拖动元素ele_drag到坐标(x,y)
# 键盘按键driver.get("https://www.baidu.com/")ele_input = driver.find_element(By.ID, "kw")
actions.send_keys("baidu", Keys.SPACE, '啦啦啦') # 连续输入actions.key_down('a').key_up('a') # 键盘按下a,键盘释放aactions.send_keys_to_element(ele_input, 'aaa') # 在元素处输入,可支持连续输入

# 容器相关actions.reset_actions() # 清空动作容器actions.perform() # 按顺序开始执行动作

time.sleep(5)driver.quit()
复制代码

软件测试开发免费视频教程分享


发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨Selenium 键盘鼠标事件ActionChains_软件测试_测试人_InfoQ写作社区