appium自动化测试教程,appium怎么做自动化测试
APP自动化测试之appium连接真机启动app
app自动化测试的第一步,是启动被测app。 appium环境搭建 好后,我们就可以连接真机启动app了。环境为windows,Appium1.18.0,Android手机,被测app为今日头条app,让我们开始吧。
写作不容易,帮忙点个赞哟!
(一)快速体验APPUI自动化-登录流程
Ps:网上有大把软件安装和环境搭建教程,本文只探讨APP-UI的自动化流程实现,另外下面涉及到的python语法和元素定位、操作也是一样的,在开始做自动化之前,建议先去打一打基础
1.测试机用USB连接电脑,选择传输文件模式
2.设置-开启手机开发者模式(大部分安卓机多次点击版本号),勾选USB调试选项
3.Win+R输入cmd进入命令提示符界面,使用adb命令查看连接情况,adb devices,如下图显示,连接成功
1.打开appium,进入测试机配置信息界面
2.使用adb命令查询测试机数据,输入配置信息
3.Pycham新建文件,直接复制上图中的配置信息,建立driver对象
4.appium中保存配置信息为一个项目(下次使用时可直接打开),进入测试界面
1.点击同意并继续按钮
2.滑动引导页,点击立即体验按钮
3.输入手机号,输入密码,点击登录按钮
4.权限弹窗点击不允许、禁止
5.输入验证码,点击下一步
6.指纹验证点击取消,跳过
7.设置手势密码
8.验证进入的界面是否有刷卡收款字段
9.退出
Robotframe work之web自动化测试小例子
????????原来一直是做Python+selenium的web自动化测试的,最近换了一家新公司,需要做app自动化测试,所以appium如何使用都得现学。框架也不是用的原来的,现在公司再用Robotframe work在做,一切都是从头开始。自己也开始记录一下学习的过程,学习遇到不懂的也都会在网上搜索,但有时候很痛苦,搜索的很费事。所以自己也就想起来将从头开始学的一些东西都记录一下。
? ??????Robotframe work的环境搭建网上都有很多,这里就不一一说明了,直接上干货,一个小小的例子。
? ??????
上图是测试51自学网,过程是这样的,sleep就不说了。
1.使用chrome浏览器打开51自学网的浏览器
2.然后鼠标悬浮在程序开发的菜单上,mouse over鼠标悬停+xpath定位
3.然后点击appium自动化测试教程子菜单, click element+xpath定位,若点击按钮,则用click button
4.然后进行断言验证,得到跳转页的title, get text方法获取文本,然后赋值给变量
5.进行断言,should match方法
6.输出测试完成,log方法
7.关闭浏览器
运行完成后,显示如下页面:
robotframerwork的关键字与selenium有很大差别,有时候不知道找什么关键字,那么可以按F5,在search keyword中搜索你要做的操作,比如打开浏览器,可以输入open,出现如下图:
今天就写到这里,以后我慢慢在更新,一起努力学习
基于Appium的Android自动化测试(二)——TestNG
TestNG介绍
TestNG意为test next generation,是Java中的一个测试框架,Java中已经有一个JUnit的测试框架,类似于JUnit和NUnit,但TestNG比JUnit功能更加强大,使用也更方便,测试人员一般用TestNG来写自动化测试。
TestNG最简单的测试
下面是TestNG的一个例子
packageTankLearn2.Learn;
importorg.junit.AfterClass;
importorg.junit.BeforeClass;
importorg.testng.annotations.Test;
publicclassTestNGLearn1{
@BeforeClass
publicvoidbeforeClass(){
System.out.println("this is before class");
}
@Test
publicvoidTestNgLearn(){
System.out.println("this is TestNG test case");
}
@AfterClass
publicvoidafterClass(){
System.out.println("this is after class");
}
}
TestNG的基本注解
注解 描述
@BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite 注解的方法将只运行一次,此套件中的所有测试都运行之后。
@BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的标签的运行。
@AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 注解的方法将每个测试方法之前运行。
@AfterMethod 被注释的方法将被运行后,每个测试方法。
@DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。
TestNG组测试
在编写测试的过程中,经常遇到只想执行个别或者某一部分/某一类型的测试用例,TestNG提供了分组测试方法,可以按组来执行测试用例。
packageTankLearn2.Learn;
importorg.testng.annotations.Test;
publicclassGroupTest{
@Test(groups = {"systemtest"})
publicvoidtestLogin(){
System.out.println("this is test login");
}
@Test(groups = {"functiontest"})
publicvoidtestOpenPage(){
System.out.println("this is test Open Page");
}
}
TestNG依赖测试
有时,我们需要按顺序来调用测试用例,测试用例之间存在依赖关系,TestNG支持测试用例之间的依赖。
importorg.openqa.selenium.WebElement;
importorg.testng.Assert;
importorg.testng.annotations.Test;
importpage.*;
importutil.AppiumTest;
importjava.util.List;
importstaticutil.Helpers.*;
@Test
publicvoidmethod1()
{
BookMarkEditPage bookMarkPageEdit =newBookMarkEditPage();
bookMarkPageEdit.addPoiToBookMark("清华东路西口");
Assert.assertTrue(bookMarkPageEdit.verifyAddPoiToBookMark("清华东路西口"),"添加poi点失败");
System.out.println("This is method 1");
}
@Test(dependsOnMethods = {"method1"})
publicvoidmethod2(){
BookMarkCommonPage bookMarkCommonPage =newBookMarkCommonPage();
bookMarkCommonPage.deleteAllItems();
Assert.assertTrue(bookMarkCommonPage.isDisplayed("你还没有添加收藏"),"删除失败!");
System.out.println("This is method 2");
}
TestNG忽略测试
当测试用例还没准备好时,可以给测试用例加上@Test(enable = false), 来禁用此测试用例。
packageTestng;
importorg.junit.AfterClass;
importorg.junit.BeforeClass;
importorg.testng.annotations.AfterMethod;
importorg.testng.annotations.BeforeMethod;
importorg.testng.annotations.Test;
publicclassLtg{
@BeforeMethod
publicvoidbeforeMethod(){
System.out.println("this is before method");
}
@Test(enabled =false)
publicvoidTestNgLearn1(){
System.out.println("this is TestNG test case 1");
}
@Test
publicvoidTestNgLearn2(){
System.out.println("this is TestNG test case 2"); ? ?}
@AfterMethod
publicvoidafterMethod(){
System.out.println("this is after method");
}
}
TestNg执行顺序
BeforeMethod/AfterMethod会在每个方法中调用一次,这种适用场所,比如执行完第一个用例之后要重置数据才能执行第二条用例时,可以用这种方式,BeforeMethod 就放重置数据的方法,让每个方法执行之前都去调用这个方法
TestNG具体生命周期
TestNg特点
1、annotations注释,如@test @BeforeMethod ;
2、支持多线程执行case ;
3、支持数据驱动dataProvider ;
4、支持参参数 ;
5、能够作为eclipse的插件 ;
6、能够(配合reportng)生产客观的测试报告 ;
7、可通过testng.xml管理执行case和suite;
TestNG suite
testng.xml文档中最上层的元素
说明:一个xml文件只能有一个,是一个xml文件的根级
由和组成
suite定义一个测试套件,可以设置是否使用多线程,可包含多个测试用例或者测试group。
testng.xml 配置详解
简单的大概结构如下:
以下详细XML规则
-结-构-树
suite
–tests
—-parameters
—-groups
——definitions
——runs
—-classes
–parameters
比较详细的结构如下:
APP自动化测试appium环境怎么搭建?
APP自动化测试appium环境怎么搭建?1
/12
下载安装node.js (注意操作系统,32位,64位)。安装完成后,检查是否安装成功:cmd, 输入node -v , 显示安装版本信息,则安装成功,如下图所示:
2
/12
安装JDK配置环境变量
JDK安装,以及环境变量设置
下载eclipse (注意操作系统,32位,64位),Mars版。
3
/12
配置Android SDK环境
下载Android SDK,下载地址,如下图所示:
4
/12
安装保证Level 17或以上版本 api,如下图所示:
5
/12
Android操作系统选择安装用于模拟机,如下图所示:
6
/12
配置环境变量
a新增变量:ANDROID_HOME,设置值为安装目录: l例如 E:\android-sdk
bPath中新增参数:%ANDROID_HOME%\tools; %ANDROID_HOME%\platform-tools
7
/12
验证是否安装配置成功
cmd: 输入 android, 弹出SDK Manager窗口。
8
/12
ADT安装
打开eclipse,helpinstall new software, 输入
下载时间会比较久,也可以考虑直接下载后本地安装,如下图所示:
9
/12
安装完成,重启Eclipse,如下图所示:
10
/12
安装Appium,下载: ,如下图所示:
11
/12
设置环境变量
Appium目录和他的bin目录都加入环境变量PATH:例如
APPIUM_HOME: E:\App\Appium
Path: %APPIUM_HOME%\node_modules\.bin
12
/12
运行appium-doctor来验证Appium的所有依赖是否配置正确。
基于Appium+WDA+Python搭建IOS自动化测试全纪录(三):真机demo运行
前期回顾:
基于Appium+WDA+Python搭建IOS自动化测试全纪录(二):模拟器demo运行
基于Appium+WDA+Python搭建IOS自动化测试全纪录(一):环境搭建
在模拟器将demo跑通之后,就要在真机上测试啦,模拟器总是要为真机服务的。
在真机上主要是涉及到签名及证书的问题,一下blog写的特别好,然而其实我也没有看懂,RSA算法神马的早在密码学课程上还给老师了。
iOS App 签名的原理
主要在此简单记录一下证书的配置吧。
在xcode中找到build Setting配置部分(之所以把这张图放出来是因为我最开始找不到这个配置,萌新啥都找不到):
更改一下三个字段对应的内容:
Code Siging identify 证书里面对应的开发者
Product Bundle Identify 对应的bundleID
Provisioning Profile 包含了 证书 / Entitlements 等数据,并由苹果后台私钥签名的数据包。
数据包是.mobileprovision文件格式结尾 在终端中输入如下命令即可看到里面的信息
改完之后 我们开发的程度就可以装到真机上啦,这个时候选择在真机上运行,就可以啦。
测试app装到真机上之后,还要考虑如何开启py脚本,在真机上进行测试。
这里需要注意两点:
最后找到的地址大概如下:
放到xcode中进行签名证书配置,注意虽然我们打开的是WebDriverAgent文件夹,但是我们要配置的是WebdDriverAgentRunner 在其Build Settings中进行与证书有关的配置
配置完毕后还需要再WebdDriverAgentRunner中添加一个RoutingHTTPServer.frameork
点击添加之后-add Other
在如下路径可以查找到该framework
找的一定是appium文件路径下的!
上边关于wda并没有做过多说明,因为还不怎么了解 等了解了再补充相关知识
py脚本主要是配置有更改,主体文件请见开头(二)模拟器demod的blog
在真机上配置更改如下:
然后启动appium 发现真机上装上了厕所app 装上了WebDriverAgentRunner 然后用python运行脚本就ok拉!
以上为从搭建环境-》模拟器跑demo-》真机跑demo的简单记录,不涉及到原理方面的讲解,如有错误之处还请提出。
【之后还有跳一跳的安卓环境搭建
wda的inspector相关环境还没记录~】
[Tbc]
个人博客:
进击的程序茗