最近做移动端H5页面的自动化测试时候,需要模拟一些上拉,下滑的操作,最初考虑使用使用selenium ActionChains来模拟操作,但是ActionChains 只是针对PC端程序鼠标模拟的一系列操作对H5页面操作时无效的,

比如:

# 将页面滚动条拖到底部,需要设置sleep(1)
sleep(1)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# driver.execute_script("window.scrollTo(0, 10000);") # sleep(3) 

后来阅读了下selenium的文档发现TouchAction可以对移动端页面自动化操作;

首先使用TouchAction的时候首先需要在头上引入该模块
from selenium.webdriver.common.touch_actions import TouchActions
通过scroll_from_element、flick_element 方法来实现下拉操作

TouchAction提供的一些方法:

  • double_tap(on_element) #双击
  • flick_element(on_element, xoffset, yoffset, speed) #从元素开始以指定的速度移动
  • long_press(on_element)   #长按不释放
  • move(xcoord, ycoord)   #移动到指定的位置
  • perform()   #执行链中的所有动作
  • release(xcoord, ycoord)   #在某个位置松开操作
  • scroll(xoffset, yoffset) #滚动到某个位置
  • scroll_from_element(on_element, xoffset, yoffset) #从某元素开始滚动到某个位置
  • tap(on_element) #单击
  • tap_and_hold(xcoord, ycoord) #某点按住

因为我们模拟的是移动端的H5自动化测试,首先需要我们将浏览器设置成为手机浏览器(设置之后,模拟会更加真实)

1.以元素为起点向下滑动,实现下拉操作

scroll_from_element(on_element xoffset yoffset)
on_element:开始元素滚动。
xoffset:X偏移量。
yoffset:Y偏移量。

注意:向下滑动为负数,向上滑动为正数

import timefrom selenium import webdriverfrom selenium.webdriver.common.touch_actions import TouchActions """设置手机的大小""" mobileEmulation = {'deviceName': 'Apple iPhone 5'} options = webdriver.ChromeOptions() options.add_experimental_option('mobileEmulation', mobileEmulation) driver = webdriver.Chrome(chrome_options=options) driver.get('http://m.test.90dichan.com') driver.maximize_window() """定位操作元素""" button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span') time.sleep(3) Action = TouchActions(driver) """从button元素像下滑动200元素""" Action.scroll_from_element(button, 0, -200).perform() time.sleep(3) driver.close() 

2.以元素为起点用一定速度向下滑动,实现下拉操作

flick_element(on_element, xoffset, yoffset, speed);
on_element #操作元素定位
xoffset   #x轴偏移量
yoffset #y轴偏移量
speed #速度

注意:向上滑动为负数,向下滑动为正数

import timefrom selenium import webdriverfrom selenium.webdriver.common.touch_actions import TouchActions """设置手机的大小""" mobileEmulation = {'deviceName': 'Apple iPhone 5'} options = webdriver.ChromeOptions() options.add_experimental_option('mobileEmulation', mobileEmulation) driver = webdriver.Chrome(chrome_options=options) driver.get('http://m.test.90dichan.com') driver.maximize_window() """定位操作元素""" button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span') time.sleep(3) Action = TouchActions(driver) """从button元素像下滑动200元素,以50的速度向下滑动""" Action.flick_element(button, 0, 200, 50).perform() time.sleep(3) driver.close() 

参考:
[python selenium TouchAction模拟移动端触摸操作]: https://www.cnblogs.com/mengyu/p/8136421.html
[ python+selenium滑动式验证码解决办法 ]: https://blog.csdn.net/zha6476003/article/details/79002430
[ python selenium 下拉列表定位 ]:https://blog.csdn.net/xm_csdn/article/details/53376839

转载于:https://www.cnblogs.com/mashuqi/p/10475343.html

selenium模拟H5触摸滑动之-TouchAction相关推荐

  1. html5触摸事件判断滑动方向,H5触摸事件中如何判断用户滑动方向

    这次给大家带来H5触摸事件中如何判断用户滑动方向,H5触摸事件中判断用户滑动方向的注意事项有哪些,下面就是实战案例,一起来看一下. 接口 TouchEvent TouchEvent 是一类描述手指在触 ...

  2. selenium模拟geetest极验滑动验证

    前言 前一阵子打球认识了一个小学生,为了骗他钱,吹了好半天,什么盗取心上人的QQ密码,吃鸡外挂,学校饭卡无限充值,最终达成交易10块钱帮他刷QQ赞. 回家赶快百度研究了一下,原来刷赞很简单:很多网站都 ...

  3. 用selenium模拟浏览器登录淘宝识别滑动验证码

    用selenium模拟浏览器登录淘宝,使用账号密码的方式登录淘宝,但是在登录的时候遇到需要滑动验证,使用selenium模拟点击滑块,滑动验证码完成登录. 本文的代码现测可用.做个记录,方便以后查看. ...

  4. lvgl如何用单向直线触摸滑动条模拟编码器的滚动操作,请注意,单向触摸滑动条是一个输入外设,是一个硬件,而并非lvgl内置的滑条控件...

    LVGL可以通过监听单向触摸滑动条的输入事件,并在触摸滑动条的值变化时进行相应的操作,从而模拟编码器的滚动操作.具体的实现方法如下: 初始化单向触摸滑动条:在初始化时,要确保单向触摸滑动条处于正常工作 ...

  5. 手机端触摸滑动(H5+CSS3+JS+Swiper)

    当你遇到这样一个项目,要求如下: 1. 手机端实现触摸滑动 2. 实现点击滑动 3. 在来回切换每一屏的时候 动画能够重新执行 4. 在汉堡菜单里点击某一项,实现滑动到相应的屏.(菜单页左右切换) 要 ...

  6. Python 爬取留言板留言(二):多线程版+selenium模拟

    文章目录 一.项目概述 二.项目实施 1.导入所需要的库 2.全局变量和参数配置 3.产生随机时间和用户代理 4.获取领导的fid 5.获取领导所有留言链接 6.获取留言详情 7.获取并保存领导所有留 ...

  7. 使用selenium模拟登录解决滑块验证问题

    本次主要是使用selenium模拟登录网页端的TX新闻,本来最开始是模拟请求的,但是某一天突然发现,部分账号需要经过滑块验证才能正常登录,如果还是模拟请求,需要的参数太多了,找的心累.不过好在TX的滑 ...

  8. selenium模拟登录12306

    利用selenium模拟登录12306,但是12306的登陆要想模拟还挺难的,需要先进行坐标识别,识别出来之后还要在进行滑块拖动验证识别,这里做一下记录. 这里的坐标识别是用的超级鹰,有时也会坐标识别 ...

  9. Python使用selenium模拟滑块验证登录12306网站 实测可用

    Python使用selenium模拟登录12306网站(根据12306的更新编写的2022年4月最新方法)实测可用 from selenium import webdriver from time i ...

最新文章

  1. ValueError: Variable rnn/basic_lstm_cell/kernel already exists, disallowed.
  2. 特殊标记字段(#)实时富文本显示
  3. python 学习经验 转自(http://www.elias.cn/Python/HomePage)
  4. 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
  5. 使用 JMockit 来 mock 构造函数
  6. 《scikit-learn》通过GridSearchCV来进行超参数优化
  7. 收藏 | 可解释机器学习发展和常见方法!
  8. android dialog的封装,Android系统Dialog的简单封装
  9. 315页 A Tutorial on Graph Neural Networks for NLP
  10. jenkins - publish over ssh 学习+踩坑记
  11. 全网最全极限学习机(ELM)及其变种的开源代码分享
  12. 最新老韩泰牛PHP基础班+大牛班+大牛班高级课程
  13. 2023-2029年中国LED产业园区行业市场深度监测及战略咨询研究报告
  14. 服务器存档修改器,太吾绘卷存档修改器v2.6
  15. 搜索引擎的技术发展趋势
  16. 压力单位PSI,PSIG, PSIA的区别
  17. 【怀念】清明遥祭外婆
  18. mysql 整除取整,MySQL小数位取整
  19. ie浏览器rgba不能显示的一种情况
  20. 第29课:AD中class,设计参数,规则的设置

热门文章

  1. xBIM WeXplorer 设置模型颜色
  2. Error: The 'decorators' plugin requires a 'decoratorsBeforeExport' option
  3. P4915 帕秋莉的魔导书
  4. Processing Orders With Windows Workflow
  5. 利用python3.x实现小爬虫下载贴吧内图片
  6. 配置apache+php环境详解
  7. 使用 UpdatePanel 【转by Dorian Deng】
  8. 2021长安二中高考成绩查询,长安一中、长安二中,2017年高考上线喜报!
  9. exchange无法收发邮件_Python使用POP3和SMTP协议收发邮件!
  10. 二维方向图matlab程序,二维点源阵方向图,阵因子matlab