基于WebDriverAgent + Cucumber的自动化测试框架

        前段时间由于所在项目需要对移动设备进行测试,所以就有了去研究针对移动设备自动化测试工具想法。通过对目前比较主流的第三方的测试框架进行搜索发现,现在最主流的测试框架无外乎Appium 和 WebDriverAgent。最终选择了后者作为我们的测试框架,具体原因如下:

1.同时支持模拟器和真机。

2.实现了大部分的WebDriver spec。

3.支持USB,设备不需要联网。

4.提供了Inspector,有了这个就可以方便的找到界面上的元素。

5.和Xcode协同工作,让测试用例的编写和执行更为方便。

6.可以轻松的实现模拟用户使用流程。

7.支持原生和非原生App。

      较之Appium而言,WebDriverAgent最大的短板是只支持IOS,不支持Android设备的测试。但Appium对跨平台的支持的问题多也是众所周知的, 谁用谁知道^_^。


      上面说了这么多,下面就让我们说说怎么搭建测试环境。由于我们使用Xcode来启动webDriverAgent,所以以下准备工作必不可少。

1.下载Xcode ,最好是8.0以上的。

2.下载webDriverAgent 到本地。

3.下载Jwda,这里面有一些比较common的action在里面。

4.下载安装FBSimulatorControl,这个不是必须但是建议下载,因为后面会用到。

      用Xcode打开webDriverAgent. 找到WebDriverAgentRunner->UITestingUITests.m,运行testRunner,然后就可以看到如下图1所示内容,simulator启动成功。

图1

      同时在上图1里面可以看到ServerURL信息,通过这个URL加上一些Status或者Inspector信息,我们就能很直观的看到一些simulator上的元素以及状态信息。

http://10.205.21.123:8100/status    /*查看状态信息*/

http://10.205.21.123:8100/Inspector /*查看Inspector*/

      接下来用Intellij或者Eclipse打开Jwda工程(以下是以Instllij为例)。在DeviceConfig文件中可以看到待测试设备的信息,以及一些配置信息。也包括上面提到的FBSimulatorControl的信息,如果没有安装编译时会报错。接下来按如下步骤操作

1.在pom.xml 中添加下面的cucumber依赖.

<dependency>

       <groupId>info.cukes</groupId>

      <artifactId>cucumber-core</artifactId>

      <version>1.2.3</version>

</dependency>

<dependency>

     <groupId>info.cukes</groupId>

     <artifactId>cucumber-java</artifactId>

      <version>1.2.3</version>

</dependency>

<dependency>

     <groupId>info.cukes</groupId>

    <artifactId>cucumber-junit</artifactId>

    <version>1.2.3</version>

</dependency>

待新的依赖加载完成后,在Java下面创建文件夹

1.common存放一些通用的类文件,例如执行文件。

2.stepDefinations 顾名思义,主要是存放一些定义的一些执行步骤。

packagestepDefinations;

importcom.google.gson.JsonObject;

importcommon.JWda;

importcucumber.api.java.Before;

importcucumber.api.java.en.Given;

importorg.junit.After;


public class Demo {

public static JWda Instance;

@Before

public void stepInit(){

Instance = new JWda();

Instance.cleanKeychain("com.apple.mobilesafari");

Instance.openApp("7p","com.apple.mobilesafari");

}

@After

public void closeBrowser(){

//    Instance.CloseBrowser();

}

@Given("Open baidu from safari")

public void Open_baidu_from_safari() throws Exception{

JsonObject objAddress1 = Instance.findElementsByXpath("//XCUIElementTypeOther[@label='Address']");

Instance.input(objAddress1.get("ELEMENT").getAsString(),"https://www.baidu.com");

JsonObject objAddress2 = Instance.findElementsByClass("XCUIElementTypeButton","Go");

Instance.tap(objAddress2.get("ELEMENT").getAsString());

}

3.feature 文件夹,用以存放测试用例。

图2

图2所示的执行文件中,features是用来指定测试用例的存放位置信息;format用来配置打印测试报告格式及存储位置;glue告诉编译器执行步骤的存储路径。



      至此,环境搭建工作就结束了,后面就是如何创建用例,我们将会在下一篇文章中讲解。各位看官可以通过链接下载我的Demo . 需要说明的几处修改:

1.运行之前需要根据本地文件存放路径对DeviceConfig文件中的信息进行修改。

2.通过fbsimctl list查询到各种不同型号的simulator的串码,例如

CNlyguo:phantomjs lyguo$ fbsimctl list

F443C728-3D0F-4253-B7B7-C73F316DEC98 | iPad Pro (12.9 inch) | Shutdown | iPad Pro (12.9-inch) | iOS 10.3 | x86_64

523BF692-3252-41F1-B956-BE9C391A0526 | iPad Air 2 | Shutdown | iPad Air 2 | iOS 10.3 | x86_64

24B252BC-6FB6-4A30-8E67-62B6DDDF9FD2 | iPhone 7 Plus | Booted | iPhone 7 Plus | iOS 10.3 | x86_64



在此对提供Jwda的小伙伴致以特别感谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容