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

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

  1. 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                     #速度

注意:

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

  1. # -*- coding: utf-8 -*-
  2. # @Time : 2017/12/28 10:26
  3. # @Author : Hunk
  4. # @File : ex86.py.py
  5. # @Software: PyCharm
  6. import time
  7. from selenium import webdriver
  8. from selenium.webdriver.common.touch_actions import TouchActions
  9.  
  10. """设置手机的大小"""
  11. mobileEmulation = {'deviceName': 'Apple iPhone 5'}
  12. options = webdriver.ChromeOptions()
  13. options.add_experimental_option('mobileEmulation', mobileEmulation)
  14. driver = webdriver.Chrome(chrome_options=options)
  15. driver.get('http://m.test.90dichan.com')
  16. driver.maximize_window()
  17. """定位操作元素"""
  18. button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span')
  19. time.sleep(3)
  20. Action = TouchActions(driver)
  21. """从button元素像下滑动200元素,以50的速度向下滑动"""
  22. Action.flick_element(button, 0, 200, 50).perform()
  23. time.sleep(3)
  24. driver.close()

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

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

注意:

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

  1. # -*- coding: utf-8 -*-
  2. # @Time : 2017/12/28 10:26
  3. # @Author : Hunk
  4. # @File : ex86.py.py
  5. # @Software: PyCharm
  6. import time
  7. from selenium import webdriver
  8. from selenium.webdriver.common.touch_actions import TouchActions
  9.  
  10. """设置手机的大小"""
  11. mobileEmulation = {'deviceName': 'Apple iPhone 5'}
  12. options = webdriver.ChromeOptions()
  13. options.add_experimental_option('mobileEmulation', mobileEmulation)
  14. driver = webdriver.Chrome(chrome_options=options)
  15. driver.get('http://m.test.90dichan.com')
  16. driver.maximize_window()
  17. """定位操作元素"""
  18. button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span')
  19. time.sleep(3)
  20. Action = TouchActions(driver)
  21. """从button元素像下滑动200元素"""
  22. Action.scroll_from_element(button, 0, -200).perform()
  23. time.sleep(3)
  24. 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. mongo-2ds索引对超过半球范围的适用性测试

    以下测试均基于mongo v4.0 win10 一.GeoJSON GeoJSON是一种基于json的经纬度描述数据格式.在这里主要服务于2dsphere索引查询. 基本格式  <type:&q ...

  2. QT之uic、moc、rcc命令生成相应的cpp文件

    1.rcc 生成qrc.cpp文件 2.uic生成ui_*.h,moc生成moc_*.cpp文件

  3. debian系linux墙内安装安全工具集

    虽然有kali linux这样集合了很多安全工具的操作系统,但是kali的软件源相对老旧,没有ubuntu等主流debian系统丰富,kali默认使用su权限进入图形化界面也是违背linux权限机制的 ...

  4. c++ string 转double

    #include <iostream>#include <sstream> //使用stringstream需要引入这个头文件using namespace std; Type ...

  5. 连号区间数(2013年第四届c/c++ b组第10题)

    题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...

  6. 递归加载Treeview

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  7. 爬虫豆瓣top250项目-开发文档

    项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 负责内容:1.使用python的request库先获取网页内容下来 2.再使用一个好用的lxm ...

  8. 关于实时监听input的值得变化的问题

    onchange 关于input的onchange事件  其实是有出发条件的  并非实时监听的 1.鼠标点击事件  或者键盘事件(tab和wins键都可以触发  enter在ie9时不触发,火狐和ch ...

  9. redis命令Map类型(五)

    如果存储一个对象 这个时候使用String 类型就不适合了,如果在String中修改一个数据的话,这就感到烦琐. hash 散列类型 ,他提供了字段与字段值的映射,当时字段值只能是字符串类型 命令: ...

  10. 使用SQLsever批量查询TXT文本中的值

    测试文档如下,需要查到case_no值为以下时,对应的单据信息分别是什么. 步骤如下: 在txt文本中 Ctrl+H,输入如下,点击“全部替换” 在word文本中,复制以上信息到word文本中,目的是 ...