·5 |webdriver/common/action_chains.py-ActionChains类分析

  • 1 源码路径
  • 2 功能描述
  • 3 使用方法
  • 4 几个方法
    • 4.1 `__init__`方法
    • 4.2 `perform`方法
    • 4.3 `reset_actions`方法
  • 5 ActionChains类API
  • 6 实例

1 源码路径

selenum/webdriver/common/action_chains.py

2 功能描述

  • 提供鼠标操作,模拟用户的鼠标行为;
  • 如鼠标的各种单击、双击、滑动、拖拽等操作。

3 使用方法

  • 源码说的很清晰了,只要使用以下的方法即可:
  ActionChains can be used in a chain pattern::menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()Or actions can be queued up one by one, then performed.::menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")actions = ActionChains(driver)actions.move_to_element(menu)actions.click(hidden_submenu)actions.perform()

4 几个方法

4.1 __init__方法

  • 需要传递一个driver,这个在实际应用中就是使用这个类的时候需要传递一个driver
  • 源码:
 def __init__(self, driver):"""Creates a new ActionChains.:Args:- driver: The WebDriver instance which performs user actions."""self._driver = driverself._actions = []if self._driver.w3c:self.w3c_actions = ActionBuilder(driver)

4.2 perform方法

  • 用来执行存储的所有动作或操作;
  • 源码:
    def perform(self):"""Performs all stored actions."""if self._driver.w3c:self.w3c_actions.perform()else:for action in self._actions:action()

4.3 reset_actions方法

  • 用来清空所有的动作;
  • 源码:
    def reset_actions(self):"""Clears actions that are already stored locally and on the remote end"""if self._driver.w3c:self.w3c_actions.clear_actions()self._actions = []

5 ActionChains类API

API 说明
perform(self) 执行已经存储的操作
reset_actions(self) 清除已存储在本地和远程端的操作
click(self, on_element=None) 单击元素,如果元素没有,单击当前鼠标位置
click_and_hold(self, on_element=None) 鼠标左键按住某个元素,如果有on_element则点击,如果没有则默认点击鼠标所在位置
context_click(self, on_element=None) 右键单击,如果有on_element则点击,如果没有则默认点击鼠标所在位置
double_click(self, on_element=None): 鼠标双击,如果有on_element则双击,如果没有则默认点击鼠标所在位置
drag_and_drop(self, source, target) 鼠标左键拖拽, 即用鼠标把一个元素拖到另一个元素上
drag_and_drop_by_offset(self, source, xoffset, yoffset) 鼠标左键拖拽, 鼠标从源元素拖拽到源元素的x,y轴偏移量上并释放鼠标
key_down(self, value, element=None) 按下按键,只应用于修饰健:Control, Alt and Shift
key_up(self, value, element=None) 释放按键,只应用于修饰健:Control, Alt and Shift
move_by_offset(self, xoffset, yoffset) 鼠标移动,将鼠标移动到当前位置的xy偏移量
move_to_element(self, to_element) 鼠标悬停在当前元素上
move_to_element_with_offset(self, to_element, xoffset, yoffset) 将鼠标从元素的左上角开始计算开始偏移,偏移量为xy
pause(self, seconds) 在指定的持续时间(秒)内暂停所有输入
release(self, on_element=None) 在元素上释放鼠标按钮,如果没有元素,则在当前位置释放
send_keys(self, *keys_to_send) 在当前位置发送按键 ,键常量在Keys类中
send_keys_to_element(self, element, *keys_to_send) 发送按键在当前定位元素上,键常量在Keys类中

6 实例

  • 输入百度网址
  • 输入NoamaNelson
  • 回车搜索
  • 最大化窗口
  • 全选输入的内容,重新输入N
  • 点击“百度一下”进行搜索
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/5/16
# 文件名称:selen_stu.py
# 作用:打开百度输入NoamaNelson
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelsonfrom selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import timedriver = webdriver.Chrome()
driver.get("http://www.baidu.com")driver.find_element_by_id("kw").send_keys("NoamaNelson")
time.sleep(1)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
driver.maximize_window()
time.sleep(0.5)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
time.sleep(0.5)
driver.find_element_by_id("kw").send_keys("N")
su = driver.find_element_by_id("su")
ActionChains(driver).click(su).perform()
time.sleep(1)
driver.quit()

『全栈测试技术,分享,共勉,共进,提升』


selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析相关推荐

  1. selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类

    1 源码路径 selenum/webdriver/common/action_chains.py 2 功能描述 提供鼠标操作,模拟用户的鼠标行为: 如鼠标的各种单击.双击.滑动.拖拽等操作. 3 使用 ...

  2. selenium源码通读·4 |webdriver/common分析

    ·4 |webdriver/common分析 1 定义 2 common目录 3 actions.html5 目录 4 目录说明 5 实例演示 1 定义 selenium/webdriver/comm ...

  3. selenium源码通读·12 |webdriver/remote分析

    ·12 |webdriver/remote分析 1 源码路径 2 功能说明 3 部分功能详解 3.1 command.py 3.2 errorhandler.py 1 源码路径 selenium/we ...

  4. 记录自己看selenium源码的一些收获(五)RemoteWebDriver类

    记录这个重要类的成员和方法(它是所有其他浏览器driver类的超类) 成员:这些成员有不同的setter getter方法. // Selenium的日志入口private static final ...

  5. 高并发 WEB 服务器 nginx 源码通读中文分析注释,带详细函数注释及函数调用注释,附 github 地址,后期持续维护更新...

    github地址:https://github.com/y123456yz/reading-code-of-nginx-1.9.2 对源码通读注释,函数进行了详细注释.同时对相关功能进行了优化,日志功 ...

  6. Postgresql源码(85)查询执行——表达式解析器分析(select 1+1如何执行)

    相关 <Postgresql源码(61)查询执行--最外层Portal模块> <Postgresql源码(62)查询执行--子模块ProcessUtility> <Pos ...

  7. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介 | Launcher 应用快捷方式图标点击方法分析 )

    文章目录 一. Launcher 应用简介 二. Launcher 应用源码简介 三. Launcher 图标点击方法分析 一. Launcher 应用简介 Launcher 应用 : Android ...

  8. SpringCloud组件 源码剖析:Eureka服务注册方式流程全面分析

    在SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?文章中我们讲到了服务注册的几种注册方式,那么这几种注册方式的源码是怎么实现的呢?我们带着这一个疑问来阅读本章内容能够让你更深 ...

  9. faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py

    转载自:faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...

最新文章

  1. 【计算摄影】计算机如何学会自动裁剪图片(自动构图)?
  2. ASP.NET的MVC中使用Session做身份验证(附代码下载)
  3. NYOJ 70 阶乘因式分解(二)
  4. Unity 音频优化方案
  5. python基础入门(10)之循环语句
  6. dns服务器的配置与管理
  7. 假如 AI 时代少了软件可信,我们将面临什么?
  8. kernel or user oops信息定位步骤
  9. 美团java后端面试题目_美团笔试题(Java后端5题2小时)
  10. 2022考研笔记-政治(思修)
  11. r730 raid5 linux 驱动,DELL R720安装REDHAT5.1 RAID驱动问题
  12. usc week 5 计算几何(包含凸包) 队内练习题
  13. 积木Sketch插件进阶开发指南
  14. stm32f107使用外部16MHz晶振
  15. Me-tetrazine-Disulfo-Cyanine5,甲基四嗪-磺酸基菁染料Cy5,蓝色固体
  16. android声音大小锁定,固定音量锁(锁定音量)app
  17. 联想e470c怎么修改电脑语言,联想ThinkPad E470自带win10系统如何改win7系统
  18. Android10.0 Service启动源码解析
  19. 广西铁路局计算机类待遇怎么样,南宁铁路局月薪待遇 如何进入铁路工作
  20. ES6给对象部署Iterator

热门文章

  1. 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
  2. 英语四六级及考研语法(学习方法)
  3. Mac Safari 配置 IE 代理 (支持 IE 调试)
  4. apache服务器(下)
  5. Linux——DNS篇
  6. 如何应对网站流量暴增
  7. Rich feature hierarchies for accurate object detection and semantic segmentation
  8. 如何把一组计算机做成云,怎样才能把旧电脑变成云电脑呢?
  9. 如何让计算机桌面自动更换,怎么让电脑自动更换桌面背景
  10. java的结课课程设计,java课程设计总结