Selenium ActionChains、TouchAction方法
ActionChains和TouchAction可以用来模拟点击、双击、滑动等事件。ActionChains用于执行PC端的鼠标移动、按键、拖拽等事件;TouchActions用法与ActionChains类似,可以用来模拟PC和移动端的点击、滑动、拖拽等手势操作。
ActionChains和TouchAction都是将动作存储在队列中,然后执行perform()方法,按队列顺序执行动作。
ActionChains
有两种执行方式
链式:
ActionChains(driver).move_to_element(element).click(element).perform()
分布式:
actions=ActionChains(driver)
actions.move_to_element(element)
actions.click(element)
actions.perform()
例一:点击,右键,双击操作
测试页面:http://sahitest.com/demo/clicks.htm

python代码:
self.driver.get("http://sahitest.com/demo/clicks.htm")
click = self.driver.find_element_by_xpath("//*[@value='click me']")
doubleclick = self.driver.find_element_by_xpath("//*[@value='dbl click me']")
rightclick = self.driver.find_element_by_xpath("//*[@value='right click me']")
action= ActionChains(self.driver)
action.click(element_click)
action.context_click(element_rightclick)
action.double_click(element_doubleclick)
action. perform()
例二:移动鼠标到某个元素上
将鼠标移动到“新闻”后进行点击

python代码:
self.driver.get("http://www.baidu.com")
ele = self.driver.find_element_by_link_text("新闻")
action = ActionChains(self.driver)
action.move_to_element(ele)
action.click()
action.perform()
例三:通过像素坐标点击页面
使用move_by_offset()方法实现点击页面,像素坐标可以使用截图工具来获取。
python代码:
ActionChains(self.driver).move_by_offset(x, y).click().perform() #左键点击
ActionChains(self.driver).move_by_offset(x, y).context_click().perform() #右键点击
例四:模拟键盘输入
模拟键盘输入可以使用win32api模块,也可以用 selenium的WebElement对象的send_keys()方法来实现:
element = self.driver.find_element_by_id(element) element.send_keys(**"test"**) element.send_keys(Keys.BACK_SPACE) assert element.get_attribute("value") == "tes"
ActionChains类也可以模拟键盘输入:
Action = ActionChains(driver) action.send_keys(Keys.BACK_SPACE) # 回退
action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL) # CTRL+A
action.perform() # 执行
测试页面:http://sahitest.com/demo/label.htm

在文本框1中输入内容,然后将文本框1的内容复制粘贴到文本框2
self.driver.get("http://sahitest.com/demo/label.htm")
ele1 = self.driver.find_element_by_xpath("/htmL/body/label[1]/input")
ele2 = self.driver.find_element_by_xpath("/html/body/label[2]/table/tbody/tr/td[2]/input")
ele1.click()
action= ActionChains(self.driver)
action.send_keys("testing").pause(1)
action.send_keys(Keys.SPACE).pause(1) # 空格
action.send_keys("1").pause(1)
action.send_keys(Keys.BACK_SPACE) #回退
action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL) #CTRL+A
action.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL) #CTRL+C
action.key_down(Keys.CONTROL,ele2).send_keys('v').key_up(Keys.CONTROL) #CTRL+V
action.send_keys(Keys.BACK_SPACE).perform()
例五:拖拽
测试页面:http://sahitest.com/demo/dragDropMooTools.htm

python代码
self.driver.get("http://sahitest.com/demo/dragDropMooTools.htm")
drag_ele = self.driver.find_element_by_id("dragger")
Item1 = self.driver.find_element_by_xpath("/htmL/body/div[2]")
Item2 = self.driver.find_element_by_xpath("/html/body/div[3]")
Item3 = self.driver.find_element_by_xpath("/html/body/div[4]")
action= ActionChains(self.driver)
action.drag_and_drop(drag_ele, Item1).pause(1) # 方法1
action.click_and_hold(drag_ele).release(Item2).pause(1)# 方法2
action.click_and_hold(drag_ele).move_to_element(Item3).release()# 方法3
action.perform()
TouchAction
ActionChains无法操作H5页面,TouchAction可以对H5页面进行操作,实现点击,滑动,拖拽,模拟手势等各种操作。
手势控制方法
double_tap 双击
flick 滑动
flick_element 从某个元素位置开始滑动
long_press 长按
move 手势移动指定偏移
Perform 执行
release 释放手势
scroll 点击并滚动
scroll_from_element 从某个元素位置开始手势点击并滚动(向下滑动为负数,向上滑动为正数)
flick_element——从某个元素位置开始手势滑动(负数:向上滑动,正数:向下滑动)
tap 在指定元素上点击
tap_and_hold 在指定元素上点击但不释放
例一:点击、滑动
百度搜索关键字,tap方法点击百度一下,滑动到底部,点击下一页
python代码:
self.driver.get("http://www.baidu.com")
input = self.driver.find_element_by_id("kw")
search = self.driver.find_element_by_id("su")
input.send_keys("test")
action = TouchActions(self.driver)
action.tap(search)
action.perform()
action.scroll_from_element(input, 0, 10000).perform()
next = self.driver.find_element_by_link_text("下一页 >")
next.click()
总结
ActionChains和TouchAction实现了鼠标和键盘的模拟输入,更详细的介绍可以参考官方文档 https://selenium-python.readthedocs.io/api.html。
--THE END--
文章标题:Selenium ActionChains、TouchAction方法
本文作者:hiyo
本文链接:https://hiyong.gitee.io/posts/selenium-actionchains-touchaction/
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!
Selenium ActionChains、TouchAction方法的更多相关文章
- Java&Selenium智能等待方法封装
Java&Selenium智能等待方法封装 ExpectedConditions方法还有很多,自然也可以继续扩展很多 package util; import org.openqa.selen ...
- Java&Selenium 模拟键盘方法封装
Java&Selenium 模拟键盘方法封装 package util; import java.awt.AWTException; import java.awt.Robot; import ...
- Java&Selenium控制滚动条方法封装
Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...
- Java&Selenium 模拟鼠标方法封装
Java&Selenium 模拟鼠标方法封装 package util; import org.openqa.selenium.By; import org.openqa.selenium.W ...
- selenium的定位方法-单元素定位
selenium自动化测试中,提供了单个元素定位方法,多个元素定位方法,2种方式都是根据元素属性:ID.NAME.CLASS_NAME.TAG_NAME.CSS_SELECTOR.XPATH.LINK ...
- Selenium -- ActionChains().move_by_offset() 卡顿的解决方法
测试运行时间 运行时间 发现每次0.5秒,此时需要修改默认的时间 打开Python安装目录下的Lib\site-packages\selenium\webdriver\common\actions\p ...
- selenium定位元素方法汇总
#打开网页前三步 from selenium import webdriver driver=webidriver.Chrome() driver.get("https://www.baid ...
- selenium采用xpath方法识别页面元素
有些HTML页面中的元素中属性较少,经常有找不到id.class.name等常用属性的时候,这个时候xpath.css就能很好的识别到我们的元素. Firefox和chrome浏览器中均有xpath. ...
- selenium各种定位方法(转)
selenium使用 Xpath CSS JavaScript jQuery的定位方法 (治疗selenium各种定位不到,点击不了的并发症) 2017年07月28日 22:47:36 阅读数:369 ...
随机推荐
- Linux服务器学习----tomcat 服务配置实验报告(一)
一.实验目的 1. 掌握 tomcat 服务的搭建 二.实验内容 1. 搭建一台缓存 tomcat 服务器 三.实验环境1. tomcat 服务器 centos7 对应主机 ip 为 10.10.64 ...
- PHP AES加密封装类
简介 PHP AES 加密解密常用封装类 使用方式 $key = 123; $aes = new Aes($key); $data = ['a' => 1]; $aes->decrypt( ...
- WEB组态可视化软件(B/S)
WEB组态可视化软件 目录 WEB组态可视化软件 1 B/S组态软件 2 组态概念 3 组态产品呈现 4 功能特点 5 组态软件应用场景 6 经典的案例 6.1 某通信基站的组态可视化 7 具体实现 ...
- 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...
- 【C++】“反转链表”相关的题目
1.反转链表:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. (1)这道题是经典的题目了,用迭代的方式解决也是很容易的,代码量也不大.分享一个我个人做题的方式,我会先在题目开 ...
- 刷题记录:[GWCTF 2019]枯燥的抽奖
目录 刷题记录:[GWCTF 2019]枯燥的抽奖 知识点 php伪随机性 刷题记录:[GWCTF 2019]枯燥的抽奖 题目复现链接:https://buuoj.cn/challenges 参考链接 ...
- H5相关知识点整理
01-HTML5基础 了解HTML5 ☞HTML5属于上一代HTML的新迭代语言,设计HTML5最主要的目的是为了在移动设备上支持多媒体!!! 例如: video 标签和 audio 及 canvas ...
- CF850F Rainbow Balls 题解
考虑最后变成哪一种颜色. 设 \(s = \sum\limits_{i=1}^n a_i\) 设现在有 \(k\) 种当前颜色, 需要全部变成该种颜色, 期望步数为 \(f_k\). 考虑状态转移.设 ...
- 笔记-[AH2017/HNOI2017]礼物
笔记-[AH2017/HNOI2017]礼物 [AH2017/HNOI2017]礼物 \[\begin{split} ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\ =& ...
- 要你命3000会员版v20.03_全球抖音模式
要你命3000是搭配抖音和极其多软件的神器,支持国际版.国内版,可以去除全部限制,无需爬墙,无需拔卡,35个国家/自由切换,真心强大,请务必低调,谢谢合作. 下载地址:https://sansuinb ...