Python&Appium实现滑动引导页进入APP
最近在研究安卓APP的自动化测试。首先遇到的问题是,当一个session建立的时候,最先进入的是欢迎页和引导页,引导页有三张,最后一张上显示“enter”按钮,点击才能进入主界面。
欢迎页加引导页,这两个页面是每次进入APP都无法避免的,如何通过代码执行跳过它们进入主界面的操作呢?
1、建立session
def test_enterApp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.4'
desired_caps['app'] = '/Users/a140/Downloads/app.apk'
desired_caps['deviceName'] = '03083025d0250909'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
self.driver.implicitly_wait(5)
2、运用代码模拟手指从右向左滑动的操作
#获取屏幕宽度和高度
def getSize(self):
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return (x, y)
#向左滑动
def swipeLeft(self):
l = self.getSize()
x1 = int(l[0] * 0.9)
y1 = int(l[1] * 0.5)
x2 = int(l[0] * 0.1)
self.driver.swipe(x1, y1, x2, y1)
因为手机屏幕的尺寸多样,所以这里不设置固定的宽度和高度的值,而是封装了一个获取屏幕宽高度的方法,通过它计算屏幕滑动的坐标和距离。
3、调用swipeLeft()方法向左滑动,最后通过find_element_by_id()找到“enter”按钮,然后点击进入主界面
#向左滑动跳过引导页
x = 0
while x < 3:
self.swipeLeft()
x += 1
enterApp = self.driver.find_element_by_id("com.app.night:id/enter")
enterApp.click()
完整的代码如下所示:
import unittest
from appium import webdriver
class HelloWorld(unittest.TestCase):
def test_enterFilter(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.4'
desired_caps['app'] = '/Users/a140/Downloads/app.apk'
desired_caps['deviceName'] = '03083025d0250909'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
self.driver.implicitly_wait(5)
#向左滑动跳过引导页
x = 0
while x < 3:
self.swipeLeft()
x += 1
enterApp = self.driver.find_element_by_id("com.app.night:id/enter")
enterApp.click()
#获取屏幕宽度和高度
def getSize(self):
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return (x, y)
#向左滑动
def swipeLeft(self):
l = self.getSize()
x1 = int(l[0] * 0.9)
y1 = int(l[1] * 0.5)
x2 = int(l[0] * 0.1)
self.driver.swipe(x1, y1, x2, y1)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(HelloWorld)
unittest.TextTestRunner(verbosity=2).run(suite)
Python&Appium实现滑动引导页进入APP的更多相关文章
- ViewPager滑动引导页
ViewPager实现Animation动画引导页 http://blog.csdn.net/ye_scofield/article/details/44831357 SurfaceView实现动 ...
- python+appium 自动化1--启动手机京东app
出处:https://www.cnblogs.com/yoyoketang/p/6128735.html 前言: 环境搭建好了.接下来先体验下如何启动app--1.首先获取包名:2.然后获取launc ...
- 6.1 python+appium元素定位方式(登录app)
1.0.0 :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)
好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...
- GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)
每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...
- Python+Appium自动化测试(15)-使用Android模拟器(详细)
做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...
- android使用ViewPager实现欢迎引导页
android使用ViewPager实现欢迎引导页 大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面.当第二次启动的时候,则直接进入主界面. 这种效果一 ...
- python+Appium自动化:app滑动操作swipe
swipe Appium使用滑动操作用到了swipe方法,定义如下: swipe(self, start_x, start_y, end_x, end_y, duration=None) 从一个点滑动 ...
- [iOS] App引导页的简单实现 (Swift 2)
转载请注明出处:http://www.jianshu.com/p/024dd2d6e6e6# 已更新至 Xcode7.2.Swift2.1 在第一次打开App或者App更新后通常用引导页来展示产品特性 ...
随机推荐
- JVM如何理解Java泛型类
//泛型代码 public class Pair<T>{ private T first=null; private T second=null; public Pair(T fir,T ...
- SQL语言逻辑执行顺序
SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_conditio ...
- Android之Drawable
Android 中图片和常见的颜色都可以是一个Drawable. Drawable可以方便我们做出一些特殊的UI效果,这一点在UI相关的开发工作中尤其重要.其主要优点有: 使用简单,比自定义View成 ...
- 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站
开门见山视频教程 https://v.qq.com/x/page/d0645s79xrq.html 前 言: 这是小猫的第二篇node教程,第一篇教程是一个简单的试水,小猫的node教程面向对象为没有 ...
- 《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版
前言 到目前为止写过刚好两百来篇博客,看过我博客的读者应该大概知道我每一篇博客都沿袭着一贯的套路,从前言到话题最终到总结,本文依然是一如既往的套路,但是不是介绍技术,也可说是介绍技术,不过是介绍书中的 ...
- Django代码注意
1.模板标签里面 extend和include是冲突的,有了extend,include无法生效,原因:是底层渲染独立机制设计导致. 2.#coding:utf-8 这句只有放在代码文件第一行才能生效 ...
- Heap
#include using namespace std; int heap[100010],cnt=0; void put(int x) { cnt++; heap[cnt]=x; int now= ...
- 全文检索-Lucene.net
Lucene.net是Lucene的.net移植版本,在较早之前是比较受欢迎的一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎. ...
- Naive RNN vs LSTM vs GRU
0 Recurrent Neural Network 1 Naive RNN 2 LSTM peephole Naive RNN vs LSTM 记忆更新部分的操作,Naive RNN为乘法,LSTM ...
- php中的抽象方法和抽象类,简单明了,一点通
1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方 ...