最近做移动端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. Problem 8: Largest product in a series

    先粘实现代码,以后需要再慢慢补充思路 s = ''' 73167176531330624919225119674426574742355349194934 9698352031277450632623 ...

  2. Vue语法学习第四课(2)——class与style的绑定

    之前学到的指令 v-bind 在用于绑定class和style时,表达式结果可以是字符串.数组.对象. 一.绑定HTMLClass ① 对象语法 <div class="static& ...

  3. 收藏nginx学习

    http://blog.csdn.net/u012186351/article/details/50605672 http://blog.csdn.net/qq_25371579/article/de ...

  4. 如何制作exe小程序

    1.构建maven项目 需要有一个main入口函数 添加M2_HOME及,java_home的环境变量 打开Preference->Java->Installed JREs->Edi ...

  5. re模块基本用法和字符集

    import re # . 能够替代任意字符 r= re.findall("a..c","abbcsd") print(r) # ^ 找最前面的 r_1 = r ...

  6. redis cluster的conf配置文件配置

    redis cluster的conf配置文件配置 master配置文件如下: bind 127.0.0.1 port tcp-backlog timeout tcp-keepalive logleve ...

  7. XShell转发数据库端口

    隧道添加 源主机为本地 目标主机为需要转发的主机

  8. [C# 基础知识系列]专题二:委托的本质论 (转载)

    引言: 上一个专题已经和大家分享了我理解的——C#中为什么需要委托,专题中简单介绍了下委托是什么以及委托简单的应用的,在这个专题中将对委托做进一步的介绍的,本专题主要对委本质和委托链进行讨论. 一.委 ...

  9. How to Animate UILabel textColor Properties

    How to Animate UILabel Properties UILabel properties cannot be easy animated due to some various rea ...

  10. 2018-2019-2 网络对抗技术 20165228 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165228 Exp2 后门原理与实践 (1)例举你能想到的一个后门进入到你系统中的可能方式? 在使用盗版软件,盗版系统,甚至游戏外挂时,往往会让我们关闭杀毒 ...