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

首先使用TouchAction的时候首先需要在头上引入该模块

from selenium.webdriver.common.touch_actions import TouchActions

通过scroll_from_element、flick_element 方法来实现下拉操作

因为我们模拟的是移动端的H5自动化测试,首先需要我们将浏览器设置成为手机浏览器;

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

  • flick_element(on_element, xoffset, yoffset, speed);

    • on_element            #操作元素定位
    • xoffset               #x轴偏移量
    • yoffset                    #y轴偏移量
    • speed                     #速度

注意:

  向上滑动为负数,向下滑动为正数

# -*- coding: utf-8 -*-
# @Time : 2017/12/28 10:26
# @Author : Hunk
# @File : ex86.py.py
# @Software: PyCharm
import time
from selenium import webdriver
from 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()

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

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

注意:

  向下滑动为负数,向上滑动为正数

# -*- coding: utf-8 -*-
# @Time : 2017/12/28 10:26
# @Author : Hunk
# @File : ex86.py.py
# @Software: PyCharm
import time
from selenium import webdriver
from 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()

下面我们看下下拉的效果

下面看一下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)                                        #某点按住

  其实上述的部分方法与ActionChains 中的鼠标操作很相似,由于与鼠标操作的书写方法一致的,所以在这里不详细介绍,具体书写方法大家可以参考下【python selenium-webdriver 元素操作之鼠标操作(四)】内容,下面我们主要来介绍下移动的操作。

python selenium TouchAction模拟移动端触摸操作(十八)的更多相关文章

  1. Python+Selenium自动化-模拟键盘操作

    Python+Selenium自动化-模拟键盘操作   0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...

  2. Python+Selenium自动化 模拟鼠标操作

    Python+Selenium自动化 模拟鼠标操作   在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...

  3. Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

    前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. Auto ...

  4. Python+Selenium笔记(九):操作警告和弹出框

    #之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一 ...

  5. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  6. Python+selenium 模拟wap端页面操作

    from selenium.webdriver.chrome.options import OptionsmobileEmulation = {'deviceName': 'iPhone X'}opt ...

  7. 使用python selenium webdriver模拟浏览器

    selenium是进行web自动化测试的一个工具,支持C,C++,Python,Java等语言,他能够实现模拟手工操作浏览器,进行自动化,通过webdriver驱动浏览器操作,我使用的是chrome浏 ...

  8. python+selenium一:对浏览器的操作

    # 1.打开Firefox浏览器from selenium import webdriverdriver = webdriver.Firefox()driver.get("https://w ...

  9. python selenium Chrome模拟手机浏览器

    在做移动端页面测试时可以利用Chrome mobile emulation 辅助完成页面的适配问题,但是目前手机市场上的型号居多我们也没有办法通过人工的模式一一的去适配,所以这里考虑到通过自动化的模式 ...

随机推荐

  1. 20175224 2018-2019-2 《Java程序设计》第四周学习总结

    教材学习内容总结 子类的定义 class 子类名 extends 父类名 { ... } 子类继承性 子类继承父类的成员变量.方法.成员变量可以被子类中自己定义的任何实例方法操作:继承的方法可以被子类 ...

  2. Java连接Oracle12c

  3. python之django母板页面

    其实就是利用{% block xxx %}   {% endblock %}的方式定义一个块,相当于占位.存放在某个html中,比如base.html 然后在需要实现这些块的文件中,使用继承{% ex ...

  4. Python小白绘图 哆唻A梦 turtle真的很强大!

    # -*- coding: utf-8 -*- """ Created on Sat Nov 10 22:02:32 2018 @author: 10029 " ...

  5. ChIP-seq基本流程及工具

    ChIP-seq数据分析整理 1.Alignment 2.Peak detection 3.Peak annotation 1. GO analysis 2. Pathway analysis 4.D ...

  6. 神州数码DEIGRP路由协议配置

    实验要求:了解DEIGRP及其配置方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip addres ...

  7. entrySet用法 以及遍历map的用法

    entrySet用法 以及遍历map的用法   keySet是键的集合,Set里面的类型即key的类型entrySet是 键-值 对的集合,Set里面的类型是Map.Entry   1.keySet( ...

  8. android 判断横竖屏的方法(转)

    public boolean isScreenChange() { Configuration mConfiguration = this.getResources().getConfiguratio ...

  9. python pip安装其他模块到中途失败问题

    当网速很差时,pip安装到中途总是出现一大片红色然后失败.而且往往安装下载很久,失败了就要从新开始,失败如下 就是,当你出现这个错误Could not find a version that sati ...

  10. javaWeb-Servlet工作原理

    1.客户发出请求—>Web 服务器转发到Web容器Tomcat: 2.Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletRes ...