python+Appium自动化测试应用教程及实例.docx

上传人:小飞机 文档编号:4888459 上传时间:2023-05-21 格式:DOCX 页数:32 大小:107KB
返回 下载 相关 举报
python+Appium自动化测试应用教程及实例.docx_第1页
第1页 / 共32页
python+Appium自动化测试应用教程及实例.docx_第2页
第2页 / 共32页
python+Appium自动化测试应用教程及实例.docx_第3页
第3页 / 共32页
python+Appium自动化测试应用教程及实例.docx_第4页
第4页 / 共32页
python+Appium自动化测试应用教程及实例.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《python+Appium自动化测试应用教程及实例.docx》由会员分享,可在线阅读,更多相关《python+Appium自动化测试应用教程及实例.docx(32页珍藏版)》请在三一办公上搜索。

1、安卓app自动化测试-appium环境篇1.1概要本篇主旨是介绍安卓app自动化测试,就不在这里扯些无关的废话,有机会再在以后 的文章中慢慢阐述一些理论的东西。有关智能机(Android/IOS)上ap?的自动化测试原理 一句话:通过python脚本利用appium第三方库实现。(另:多说一句,其他语言或其他工 具同样能够做,这里不做优劣,好坏评判。我讲的是python)我后面一系列的文章都会有 个主基调一实战为主。1.2环境篇一环境准备操作系统windows10 64位,本篇只涉及windows的环境安装,至于MAC的系统会在 以后的文章中涉及(毕竟你想要做ios的app自动化测试必须要在苹

2、果机上装环境,而MAC 的环境安装可以说是噩梦)所以大家在准备环境时,一定要看清楚自己的电脑是64位还 是32位,因为有些软件的安装要按照自身的系统选择版本!涉及到时候我会提醒大家。准备及安装步骤:python的安装有关python的安装(已经有环境的筒子略过),目前可供选择的版本Python 3.6.0 - Python 2.7.13。简单说2.7比较成熟老套,3.0以后就是比较时尚。至于 选择安装哪个版本自行决断。我的是2.7的版本。提醒:python的安装是傻瓜式的,一步步next就好,别瞎去改安装路径,最后 记得勾选配置环境变量(也就是说安装的时候就自动把环境变量给你配置好, 省的自己

3、再去配置)完成安装后,运行cmd输入? ython看到这个没报错,显示以上信息表示python的运行环境。1了。简单点输入print 1+1回车,结果应该是命令窗返回2(1) node.js 的安装从这里开始就是有关appium运行环境的准备了。第一步安装node.js。提醒:注意! !下载对应自己操作系统的版本鉴于我的操作系统是win10 64位,所以我下载的是第一个条目的64-bit的版 本。安装过程无需赘述。安装完成后,同样的在运行一cmd-输入npm -v显示以上内容表示node也装好了!(2) .NET Framework 4.5 的安装提醒:去官网下载最新的就是了,目前是4.5。(

4、3) AppiumForWindows 的安装这个就是我们的主角了,appium真身这个是安装好后的运行起来的模样。提醒:选择windows版本,如AppiumForWindows_1_4_16_1.zi p这个目前是最 新版本了。解压后直接运行appium-installer.exe安装即可。具体的操作方法在 后面的章节再提及。(4) JDK的安装由于本章是介绍安卓的自动化实现,当然缺少不了安卓环境的准备。提醒:我下载的是jre-8u111-windows-x64.exe, windows 64位版本。安装即 可。完成后就是在系统环境变量中将java的环境变量并添加到CLASSPATH中 具

5、体操作步骤:1.新建 JAVA_HOME路径为 C:Program Files (x86)Javajdk1.6.0_39 2.在CLASSPATH变量中加入路径;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;3.在Path变量中加入路径%JAVA_HOME%bin 和 JAVA_HOME%jrebin安装配置完成后,运行一cmd一输入java-version。有版本返回表示java环境 。(5) Android SDK 的安装由于大家都懂的原因国内是无法直接访问go ogle的链接地址,所以不能直接在 google的官方

6、链接下载(怀念流畅用google的年代)提醒:上面的链接是国内的一个android开发者网站,在里边可以找到Android SDK Tools的安装包。下载安装windows版本即可。同样环境变量要配置一下。 具体操作步骤:1.新建 ANDROID_HOME路径为 C:Program Files (x86)Androidandroid-sdk2.在Path变量中加入路径%ANDROID_HOME%platform-tools 和 ANDROID_HOME%tools(6) SDK Platform-Tools 的安装在上面提供的网站里,接下来就是下载相应需要的文件SDK Platform-To

7、ols,build-tools 下载下来后放到我们的sdk文件夹下面。首先 我们先看一下我们的sdk路径下的文件结构(因为这块还是需要仔细点的)。保证你的环境中如此一致,最后单说platforms这个文件夹,这是Android开发 所需的sdk,按道理我们是可以点开SDK Manager.exe直接去下载需要的sdk 版本,单都懂的原因,此路不通。所以可以直接在网站中直接下载一个对应的 sdk版本并解压放到platforms文件夹下,我下载的是android-4.2.2。在本步骤中涉及到的所有操作都可以在提供的网站里找到,注意!(7)Appium Client 的安装筒子们革命成功最后一步,回

8、到我们的python开发环境了,就是安装我们的 Appium Cliento这里推荐去官网下载安装,如果你在运行环境去通过pip2 install Appium-Python-Client命令直接安装,本身来说是最方便,简单的。但是由于 网络的原因经常会下载报错。提醒:我下载的是 Appium-Python-Client-0.23.tar.gz。最新 0.24 了。解压后, 在命令行中输入pip2 install文件解压路径setup回车。如果遇到报错可自行在 网上查找python tar包的安装方法!1.3环境篇一结束至此,我们的测试环境就安装完了。这一篇的环境篇也就要结束了。下一篇,我们将

9、从 appium的相关配置谈起,到连接真机,最后实现一个 python小demo。最后放个卫星, appium的自动化测试文章结束后,还会着手selenium在web端的文章。环境准备是个引 子,很多时候大家就败在这里,而真正重要的还是脚本代码的编写,如何构思一个自动化的 测试框架。篇2 安卓ap?自动化测试-初识python调用appium1.1概要本篇就类似于编程的第一课HelloWorld。如何用python连接到appium,实现在手机上对 app的操作呢? 一切还是以实战为主,今天我将对今日头条这个app做样例,实现一个 demo。1.2真机连接在我们的环境准备好后,此刻电脑桌面必有

10、一个Appium的程序图标吧,先别着急点开, 欲速则不达。由于是在真机上操作,当然要先把我们的手机准备好吧,啥?你的是苹果机, 那你可以有多远那啥多远了。好了手机准备好将其与电脑连上,至于什么打开开发模式之类 blabla的话我就不多说了。连接好之后运行-cmd,输入命令adb devices回车(adb后面有 空格)结果返回如上,有一串数字字母混合的设备编号,表示手机连接正常,然后把这串编号复制 一下后面会用到。1.3 Appium配置连接将真机成功连上电脑后,打开我们桌面的Appium,如下图没有什么多余的配置,保持默认就好。如点开齿轮图标,进到设置界面,检查Server Address

11、的地址是127.0.0.1 Port端口为4723 (这些都是默认的)。右nwr曰 I SettingsServerServer Address 127.0.0.1Port 4723 $Check For UpdatesPre-Launch Ap plicalionOverride Existing SessionUse Re mole ServerSelenium Grid Configuration F ileLoggingI | Quiet LoggingUse Colors Show Timestamps然后点开android机器人图标,这里需要我们设置的内容也不多,看到Capabil

12、ities里4个 配置项里 Platform Name : Android ; Automation Name : Appium ; PlatformVersion :选择 之前我们下载的sdk版本是几点几的,上一篇我们下载的是4.2的这里就选4.2就好了。不 过我这里选了 4.4 (貌似不影响运行)。最后是Device Name填写的就是我们刚才通过adb devices命令得到的设备id号。其他的配置项忽略!这些配置好后,点击界面右上角的三角运行图标,等待服务调起来,如下图。如果环境安装 的有问题会报错,或在后面的python脚本运行后会报错,对于具体的报错要看具体的报错 信息是什么。Ok

13、步骤到这里,就要开始我们的python脚本编写了。打开我们的python脚 本,我用的是PyCharm。1.4 第一个 pytho n 脚本新建python脚本文件后,这里也可以提前把我们要测试的app准备好了。今天我们用 今日头条这款app做讲解。虽然我们可以用python脚本直接安装app,但其实在实战里边 我们更多的是调取已经安装好的app进行测试(一切以实战为主),当然文章中我会提及在 脚本中如何安装app这样的方法。好,运行-cmd输入adb install app所在目录(手机没断 开与电脑的连接吧,用adb devices检查一下)。提醒一下在win10操作系统下,不用手动 去打

14、apk的路径,直接将文件拖到窗口里就行了。回车安装apk等待安装的过程,我们打开python脚本,脚本内容如下:# -*-coding:utf8-*-from appium import webdriverdevice=4d0041b1be98b01f #此处设备号pack=com.ss.android.article.news #此处是我们 app 的 package 名称activity=com.ss.android.article.news.activity.SplashActivity#此匕处是我们的 app 的主 activity #下面的按照我的脚本内容填写即可,里边内容的意思也很

15、清晰吧PATH = lambda p:os.path.abspath(os.path.join(os.path.dirname(_file_),p)desired_caps=(desired_capsdevice = androiddesired_capsplatformName = Androiddesired_capsbrowserName = desired_capsVersion = 4.4.4desired_capsdeviceName=device#desired_capsapp = PATH(D:jr.apk)desired_capsappPackage = packdesire

16、d_capsappActivity = activitydriver=webdriver.Remote(http:/localhost:4723/wd/hub,desired_caps)接下来重点讲讲我们脚本里几个参数的意思,pack和activity注释里也说了各自的含义, 这里主要讲讲如何找到某个app的package和activity的名称。方法有很多,我这里介绍一 种相对来说简单容易的,找到我们下载的app的安装包如:jinritoutiao_605.apk,将后缀改成 rar压缩文件,然后右键点击打开,找到里边的AndroidManifest.xml文件,点击rar工具的 查看按钮,

17、将其打开,然后搜索manifest,紧跟其后的就是我们要用的package名称,搜 索1activity,同样紧跟其后的就是我们的activity名称。当然其他的查找方法比如,在运行里adb logcat在日志里去查找(相对麻烦)。或者暴 力点找开发人员去问,当然只适合自己公司的产品。毕竟求人不如求己。接下来替换脚本里你找到的要测试app的package和activity,就可以直接运行我们的脚 本文件了。提醒一下,手机要连上电脑,Appium程序要是运行状态,前面的操作提到了。 脚本运行起来后,如果程序,环境都正常手机上会将今日头条启动起来,我们的脚本内容也 就是到此为止,因为脚本中没有加任

18、何操作,只是到启动app。如果有报错,查看Appium 里的日志,分析报错原因。好了,脚本运行成功后可以查看我们的手机界面,会多了两个程 序,Appium Settings和Unlock。不用管他们,也不要不明所以紧张的删掉这两个程序。讲 到这里虽然我们没有在脚本里做任何操作,但是我们离app的自动化测试已经很近了,可 以说走过了很大很大的一步。Give me five,祝贺一下!好了回到我们的脚本里,上文提到了 如何将app安装在手机上并通过python脚本将其打开的方法,那么如何在手机上通过脚本 直接安装一 app呢?看到脚本里注释掉的那句吧#desired_capsapp=PATH(D:

19、jr.apk)” Path里放置apk的安装包,这句话就是执行直接安装apk。写到这里本文也差不多了,不过我们的python的demo还没完,毕竟还要去在app上 操作点啥才算完美吧。首先啰嗦几句,python在实现操作点击我们手机上的app都是通过 操作app界面上的各个元素,所以第一步当然是怎么找到界面上的元素的问题了。导入 appium的webdriver给我提供了比较丰富的查找元素的方法,下一篇我们再具体讲解这些方法及使用。今天我们只实现一个小demo,首先观察一下今日头条的主界面,我们可以做哪些事情呢?比如说切换标题到热点,然后再点击搜索框进入搜索页面,输入搜索文字,点 击搜索按钮,

20、等待搜索结果,直接运行如下脚本。# -*-coding:utf8-*-from appium import webdriverfrom time import sleepdevice=4d0041b1be98b01f #此处设备号pack=com.ss.android.article.news #此处是我们 app 的 package 名称activity=com.ss.android.article.news.activity.SplashActivity#此匕处是我们的 app 的主 activity#下面的按照我的脚本内容填写即可,里边内容的意思也很清晰吧PATH = lambda p:

21、os.path.abspath(os.path.join(os.path.dirname(_file_),p)desired_caps=(desired_capsdevice = androiddesired_capsplatformName = Androiddesired_capsbrowserName = desired_capsVersion = 4.4.4desired_capsdeviceName=device#desired_capsapp = PATH(D:jr.apk)desired_capsappPackage = packdesired_capsappActivity =

22、 activitydriver=webdriver.Remote(http:/localhost:4723/wd/hub,desired_caps)while 1:if driver.current_activity= = .activity.MainActivity:breakels=driver.find_elements_by_id(el)news_t1=els0.textprint news1_title:,news_t1els=driver.find_elements_by_id(p_)els1.click()while 1:els=driver.find_elements_by_i

23、d(el)news_t2=els0.textprint news2_title:,news_t2if news_t2! = news_t1:breakdriver.find_element_by_id(ab0).click()while 1:if driver.current_activity= = com.ss.android.article.base.feature.search.SearchActivity: breakdriver.find_element_by_id(ll).send_keys(lamecho)driver.find_element_by_id(o9).click()

24、sleep(10)driver.quit()怎么样运行效果和我们前面说的操作步骤应该是一致的吧!至此,我们的app自动化第二篇也要结束了。最后的小demo也体现了 python实现自 动化运行app的基本逻辑,大家如果在本篇按照我的操作一路走下来也算是在自动化测试 上入门了。下一篇,我们将展开app元素这块,可能理论会更多,从如何查找定位元素, 到脚本如何实现预设的执行步骤谈起,中间也会穿插一些我的心得体会,让大家对python 在实现自动化测试这块少走一些弯路。最后感谢大家耐心读完本篇文章,我是lamecho,辣 么丑。篇3安卓app自动化测试-搞定界面元素1.1概要 本篇将对和界面元素相关

25、的内容做讲解,比如,查找元素的几种常见方法,上一篇我们看到 的driver.find_elements_by_id(el)就属于一种;还将介绍如何查看app界面上的元素去做定 位,最后还将新手经常遇到的问题做个简单的回答。1.2查找app界面元素的工具我们先来看看如何找到app界面上的元素,以及它有哪些特点需要我们关注的。首先 进入我们的 android 的 sdk文件夹,目录为 C:Program Files (x86)Androidandroid-sdktools 在tools文件夹下有个uiautomatorviewer.bat批处理文件,点开会运行一叫UI Automator View

26、er的工具。如图接下来将我们的手机连接上电脑,启动手机的app,这里我们继续以今题头条为例子,打开 今日头条,然后点击工具左上角的绿色手机图标,等待几秒,结果会出现下图的样子当我们的鼠标点击到推荐上时,看右侧的信息。主要关注resource-id,class这两个标识内 容将会是我们后面在脚本里定位元素的主要信息。大家可以先自己熟悉一下这个工具,鼠标 在不同的元素上切换看看效果。还记得我们在上一篇脚本中的操作步骤吗?第一步是点击我 们的热点按钮将app显示内容切换到热点板块,而脚本里是这样实现的 els=driver.find_elements_by_id(p_)els1.click()大家看

27、一下我们热点按键的resource-id是什么,同样也是com.ss.android.article.news:id/p_ 和推荐的id一样,同理后面并排的一系列id都是一样的。如果简单来说,我们找到了元素 并获取到元素的id后,我们在脚本里只需要这样写就好了 driver.find_element_by_id(p_)如果要操作点击driver.find_element_by_id(p_).click()但是,我们的实战碰到的情况是什么呢,今日头条的顶部各个模块的元素id都是一样的, 这样我们就要根据这个情况,去找id都是p_的一个集合,当然集合里的第一个元素就是我 们的推荐模块,第二个元素就

28、是热点模块,以此类推。所以我们的脚本就要这样去写了 els二driver.find_elements_by_id(p_) #通过 find_elements_by_id 注意是加 s 的 els1.click()#对els集合的第二个元素进行点击操作。1.3 python中查找元素的万法工欲善其事必先利其器,这里先推荐大家一个好用的IDEPyCharm。它的智能补全代 码功能非常好用,如下图Kidr Iver G I ind 1 oiomb ?_i d i 观 If: i0 finj.1id self,.WebDriCT(self. hyB value JTghJk早心企 find.K亏起 D

29、r i tc-t忘 Jmppg拱b1: L词耳1 riMlUB :lBmbDf it 韩TbiDriTronte1!inri.1 中1 iXyid,客呼 If. Ld)吨血Mmlamentisut omatdir, uia-suruxg in1 早 Mrri in 1 /iiririnrrT h tk e 后 iti t tah f 产c 1 tnn Iti n 1匚tri向下至矢 and CUI + 向上既失 wiH mave caret down and up in lhe ?d itor异A好了接下来我们来看看appium几个常用的找元素的方法:1. find_element_by_id

30、() / find_elements_by_id()2. find_element_by_class_name() / find_elements_by_class_name()你没看错,不是我漏写了,就这两种。有些童鞋可能要问了,find开头的方法不是有很 多吗?是啊从上面的截图也能看出来,什么by_tag_name、by_name、by_xpath,by_blabla-o 我在这里强调的是常用,好用,实战里用到出现频率最多的就是这两种了。当然在我的下个 系列里(学习selenium文章),在web端查找页面元素的方法就会丰富许多。前面提到的UI Automator Viewer让大家注意的

31、两个地方就是id和class 了。在平时在做培训时,经常会 遇到这样的问题,很多人会觉得的找元素好难。当每次结束培训后大家会了解难得不是找元 素,而是怎么通过编程的思路去在合适的时间找到对应的元素。因为find方法是死的,就 这几种,为什么别人能找到而我找不到?其实这里展现的问题就是很多人忽略掉的问题本 质,你要找的页面元素在你的程序执行所在的界面位置吗?举个简单的例子,来阐述这个问题的含义:比如app的操作是在点击某个界面的一个 元素A后进入下一个界面,我们要对下一个界面的某个元素B再进行点击操作。这时我们 的脚本可能是这样写的driver.find_element_by_id(A).cli

32、ck()driver.find_element_by_id(B).click()大家来看看,这样写我们在执行python脚本后会顺利执行吗?答案只有一个Maybe。 也许可能不会出错,但多数情况下会报错,返回无法找到元素B。这时看出原因的童鞋就要 说了在 driver.find_element_by_id(B).click()加上一句 driver.implicitly_wait(10)或是 sleep,脚本 就变成这样driver.find_element_by_id(A).click()driver.implicitly_wait(10)driver.find_element_by_id(

33、B).click()好了,这里先解释一下driver.implicitly_wait(10)这句的含义(给初识的筒子普及一下)这句的含义是程序等待,等待什么呢?就是等待它的下一句里要找的元素B,直到B被 找到为止,当然要加一个期限一万年,呵呵开句玩笑,直到10秒超时。也就是说在10秒 内什么时候B出现了程序就会开始继续往下执行。当然这里的超时时间可以任意指定,一 般我们指定在10秒是个比较适合的时间。它被称作“智能等待”,思维活络的童鞋可能就要 问了,难道还有非智能的等待吗?当然有了,那就是我们的time.sleep()方法,在import 我们的time包后,time.sleep(10)就是

34、实实在在的让程序等上10秒才继续往下执行代码。好, 到这里说出智能等待的童鞋脸上会露出得意的笑啊,得意的笑我这时也要问了这样写我们 在执行python脚本后会顺利执行吗?答案也只有一个,可以,肯定,必须能顺利执行。但 是这里要反转了,虽然脚本能够顺利执行,但是最后执行的结果一定是我们想的哪样吗?答 案只有一个Maybe。为什么? Why ?我们不是做了等待吗,脚本不是也顺利找到B元素了 吗?好了公布答案,回到我们的app里,两个界面,A元素在前一个界面,B元素在下一个 界面,我们脚本里通过id找到了 B,那如果说A元素所在的界面也有一个和B元素同样id 的元素呢?最后我们脚本的执行结果就是在第

35、一个界面点击A后紧接着又点击了当前界面 的另一个“B ”元素。大家仔细回味一下这个情况,而且此情况会在实战里经常碰到。好了回 过头我们看看上一篇我们的那个对今日头条的操作的demodriver.find_element_by_id(ab0).click()while 1:if driver.current_activity= = com.ss.android.article.base.feature.search.SearchActivity: breakdriver.find_element_by_id(ll).send_keys(lamecho)driver.find_element_by

36、_id(o9).click()情况是不是很像,逐条分析一下这几行。在进首页点击了 ab0 后,我们在while循环里 对当前的界面activity做判断,如果获取到当前的activity是查找界面的名称,那么我们break 退出循环,再去找ll并给他输入“lamecho”字符串,最后点击o9搜索。花这么长的篇幅来说 明这个情况,就是要说刚才的那句话“难得不是找元素,而是怎么通过编程的思路去在合适 的时间找到对应的元素”。这个时间就是我们在以后的自动化实现上需要去关注和考虑的问 题,而找元素那只是自动化必须要有的一个步骤而已。接下来我们再对 find_elements_by_id()和 find

37、_elements_by_class_name()做个简要的说 明。细心的童鞋可能发现了 element变成了复数的形式。所以通过这种方法找出来的元素必 定是一个集合,即返回给我们的是个数组(python的叫法是个list)。如果我们的脚本中出 现这样的写法你是不能直接使用send_keys()和D click()的,因为在python程序里你不能对一 个list集合做输入和点击。比如我们这样写:els= driver.find_elements_by_id(ll)els0.send_keys(lamecho)对找到的els里的第一个元素做输入,第二个就是els1,以此类推。注意下标开始是 从

38、0开始的。好了,我们的app自动化测试第三篇-搞定界面元素也要结束了。希望大家把文中偏于 理论的东西分析理解,自己上手再实现一些demo。下一篇,我们将更多的介绍一下appium 中有用的一些方法函数,比如说怎么做界面的滑动,怎么做界面坐标位置的点击,锁屏界面 的解锁是如何实现的等等。篇4安卓app自动化测试-Appium API进阶1.1概要本篇不去纠结如何去找界面元素(不明白的同学移步到我的上一篇学习)而是主要根据 手机app的特性,介绍有关的操作方法,比如如何锁屏如何在锁屏后点亮屏幕并做手势解 锁等等类似的操作实现。1.2 appium玩转安卓手机智能手机发展到今天,形成了一整套有关手势

39、操作的操作习惯,如手指左右上下滑动, 及双指缩放,还有手指的滑动解锁,摇晃手机等动作。那么我们怎么在python中利用appium 实现这些复杂的动作呢?接下来我将对大家感兴趣的一些操作,一步步认识我们强大的 Appium。1. 屏幕滑动swipe还记得我们在使用今日头条的实战中,切换热点标签是通过点击动作实现的吧。当然我 们平时在使用手机时最多的还是利用android系统的特点,一般是通过手指的左右滑动屏幕 来实现切换的。那么我们来看看脚本中是如何写的。w=driver.get_window_size()widthh二driver.get_window_size()heightdriver.

40、swipe(int(w*0.25),int(h*0.5),int(w*0.75),int(h*0.5),1000)sleep(2)driver.swipe(int(w*0.5),int(h*0.75),int(w*0.5),int(h*0.25) ,1000)大家应该直到屏幕的滑动分为四种,上划,下划,左划和右划。所以我们在利用swipe 方法时通过变化里边的参数值来实现。首先我们看看swipe方法的API文档介绍Swipe from one point to another point, for an optional duration.:Args:-start_x - x-coordina

41、te at which to start-start_y - y-coordinate at which to start-end_x - x-coordinate at which to stop -end_y - y-coordinate at which to stop -duration - (optional) time to take the swipe, in ms.:Usage:driver.swipe(100, 100, 100, 400,1000)swipe方法包含5个参数,起始点的坐标,终点的坐标及移动的时长。而这里我们确定坐标 不采用绝对值,而是通过屏幕的相对值坐标位置

42、去操作滑动,这样的好处就是不需要考虑不 同分辨率带来的影响,让你的脚本在不同分辨率的手机上都可以顺利执行。所以这里我们先 通过get_window_size()方法获取到当前手机的长,宽,然后再通过长宽上的不同比例来实现 两个点的定位。driver.swipe(int(w*0.25),int(h*0.5),int(w*0.75),int(h*0.5),1000)实现的是屏幕的 左划;driver.swipe(int(w*0.5),int(h*0.75),int(w*0.5),int(h*0.25) ,1000)实现的是屏幕的上划操 作。大家可以把脚本加到我们的今日头条的demo脚本中,去看看实

43、现效果,左划一次做页 面的切换,上划浏览今日头条下面的文章。这里注意我们的左后一个参数时间,当我们的时 间设置的很短,带来的效果是对应我们滑动的速率很快,拿上划来说你将浏览更多的文章。 具体的效果大家可以自行体验一下。2. 屏幕点击一tapdriver.tap()方法是模拟手指多点点击的,即我们常说的多点触控。我们拿两点触控来说 就是两根手指点击屏幕driver.tap(398,1864),(703,1852),3000)我们将其加到代码中,实现这两个坐标点的同时点击3秒。这里要介绍一下,如何快速的查 看到当前屏幕的坐标,在手机的设置-开发者选项中有一个“显示触摸位置和“显示指针位置” 的选项

44、,打开即可看到屏幕的最上方就会显示坐标了。另外多点触控最多支持5个点位的同 时点击。3. pinch 和 zoom 缩放这两个方法pinch是实现屏幕上元素的缩小,常用于图片的缩小;那么zoom就是元素 的放大了。pinch(self, element=None, percent=200, steps=50)zoom(self, element=None, percent=200, steps=50)比如找到我们要进行缩放的元素element,缩放比例percent200就是2倍的比率,steps是 步长。比如我们在进入头条点开一个图片后,对图片进行放大操作els=driver.find_el

45、ements_by_class_name(android.widget.ImageView)sleep(3)driver.zoom(els0,200,50)4. 锁屏及手势解锁在模拟手势解锁屏幕上,我们需要导入appium的TouchAction模块其实这个模块的功 用类似selenium里的ActionChain,用法也都类似。在使用TouchAction时我们可以在一行 的语句中实现连续的动作执行,思考一下手势解锁的操作流程:点击第一个位置然后移动到 第二个位置,再移动到第三个位置,以此类推最后手指移开。那么大家看看这样一些的动作 我们使用TouchAction怎么来完成。TouchAct

46、ion(driver).press(x=159,y=749).move_to(x=206,y=0).move_to(x=206,y=0).move_to( x=0,y=201).move_to(x=0,y=201).release().perform()这里需要注意的一点是,在move_to里填写的必须是相对坐标。好了,解锁会了,那怎么 使用屏幕锁屏呢?这个就很简单了执行driver.lock(3)driver.keyevent(26)第一行就是我们的锁屏命令,里边的参数标识锁屏时间,不过实际执行中并没有起到时间的 作用。第二行这里大家也要注意一下,它是keyevent表示我们执行一些手机键盘

47、指令动作, 26表示的是电源键。具体还有哪些,大家自行搜索网上有很多,我就不在这里列出来了。 这样的动作就是锁屏然后操作电源键点亮屏幕,接下来就是执行我们的解锁动作就可以了。5. 拖拽一drag_and_drop这个动作也很好理解,比如在qq消息中当接收到新消息后在消息列表右边会出现一个 表示消息数的小圆圈,我们手指拖动它后会将其取消掉。那么这样的操作在appium里怎么 实现呢?那就用到drag_and_drop方法了,我们看看具体的脚本,由于今日头条没有这样的 操作,我就在qq中去执行了,脚本如下:els_title=driver.find_elements_by_id(icon)els_unmsg=driver.find_elements_b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号