JAVA_Selenium Appium安卓自动化测试 -第一个case

      上文中我们已将环境准备好了,现在我们就利用一个case来认识这套框架。我们先利用Intellij IDEA(下问中我都以IDEA称)新建一个maven项目。由于我使用的电脑无法连接外网,所以项目中我将依赖重新添加到lib 目录中添加依赖的过程大家可以连接到中央库可以忽略。

       1.打开IDEA我们新建一个项目

 

   2.选中Maven,勾选Create from archetype 选这quickstart

 

       3.输入:GroupId (com.公司域名),ArtifactId(项目名称),Version(版本号)  之后就一直Next/Finish就可以了(其中Project location可以自己选择项目目录)

 

  4.启动后我我发现我这里maven由于网络问题无法连接到中央库。我只能手动添加依赖了!

 

 5.新建两个目录:lib;com.zl.testAppium 由于我这个网络问题导致我这个目录结构和实际的有区别,一般com.zl.testAppium会在src\test\java目录下有的。为了好统一手动完成添加。如下图:

 

 

之后就是添加依赖了如果是可以连接中央库,直接可以通过maven进行配置,添加配置如下:(点击Import Changes 就可完成依赖管理)

 

 

图中代码如下:

 

<dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.53.1</version>
            <!--<version>3.3.1</version>-->
        </dependency>
        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
            <scope>test</scope>
        </dependency>
        <!-- Includes the Sauce JUnit helper libraries -->
        <dependency>
            <groupId>com.saucelabs</groupId>
            <artifactId>sauce_junit</artifactId>
            <version>2.1.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>com.netease.qa</groupId>
            <artifactId>arrow</artifactId>
            <version>0.0.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.uncommons</groupId>
            <artifactId>reportng</artifactId>
            <version>1.1.4</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
</dependencies>

但如果有人和我一样无法连接到中央库就需要自己导入jar包了

    下面是我使用的几个jar包 下载地址

链接:https://pan.baidu.com/s/1cNP_yLRp2RfCIMh31yQpAA 密码:levn

链接:https://pan.baidu.com/s/1znfQ_IJouuSaMsfMx7zbyQ 密码:ph35

链接:https://pan.baidu.com/s/1PppSf9xV91ikRfzykmFiTg 密码:uxpd

链接:https://pan.baidu.com/s/1UGM8S2D7FkZ9rusYBf3rkQ 密码:1mcg

 

      相关的依赖全部做完了,现在我们开始敲,敲,敲

1.在src\test\java\com.zl.testAppium 目录下新建一个java 文件 Case1 在新建项中没有java文件是由于文件类型没有正确:可以在File\Project Structure\Modules\Sources 中将com.zl.testAppium 设置为tests 如下结果图:

 

之后我们就已手机的计算器为例子,新建3个方法:setUp();test1();tearDown()  分别用来做三个动作:启动,计算1+2=? 判断是不是等于3,关闭。

   启动中我们需要使用selenium中的DesiredCapabilities对Appium进行一下配置如下:

 

这里里面有几个参数的值我提出来说明一下:

deviceName:   设备序列号(使用ADB命令:adb devices 可以获得)

appPackage:   待测APP 包名(这个在使用安卓工具uiautomatorviewer 中获得package)

appActivity:   待启动APP的Activity(启动的Activity)

appiumUrl:    Appium服务Url(一般为“http://127.0.0.1:4723/wd/hub”)

     这里单独说一下这个appActivity,如果你有APP源码就可以直接知道了,如果没有可以使用命令:adb shell 进入shell中输入命令:monkey -p com.android.bbkcalculator -v 1  (其中com.android.bbkcalculator是计算器的包名)  如图途中的.Calculator 就是需要获得的appActivity。

 

我们通过uiautomatorviewer 可以获得我们需要的几个控件的id 

 

我们将需要用到的参数都单独定义出来如下:

 

之后就是找元素进行点击了,这里我们需要用到findElementById();和.click();.getText();如下图

 

最后我们要做的事情就是测试完成后关掉APP 使用:close()

最后这里用到了testng  这里就不单独才说了 最后我们就开始准备运行了,运行前我们需要打开调试模式,运行appiun如下图

 

到这基础的用例就完成啦!

运行结果如下:

最后附上代码如下:

private AndroidDriver<AndroidElement> driver;

    public static String deviceName= "4L4DFA4SLFL7G69D";
    public static String packgeName ="com.android.bbkcalculator";
    public static String mainActivityName =".Calculator";
    public static String appiumUrl ="http://127.0.0.1:4723/wd/hub";

    public static String BUT_1= "com.android.bbkcalculator:id/digit1"; //按键1
    public static String BUT_2 ="com.android.bbkcalculator:id/digit2";//按键2
    public static String BUT_PLUS ="com.android.bbkcalculator:id/plus";//按键+
    public static String BUT_EQUAL ="com.android.bbkcalculator:id/equal";//按键=
    public static String BUT_RESULT ="com.android.bbkcalculator:id/edit_result_text";//结果显示框

@BeforeClass
    public void setUp() throws MalformedURLException {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("automationName","Appium");
        capabilities.setCapability("browserName", "");//待测手机的浏览器名称,自动化测试填空
        capabilities.setCapability("appiumVersion", "1.4.16.1");
        capabilities.setCapability("platformName", "Android");//设备类型
        capabilities.setCapability("deviceName", deviceName);//设备序列号
        capabilities.setCapability("platformVersion", "5.1");//待测安卓系统版本
        capabilities.setCapability("appPackage", packgeName);//待测APP 包名
        capabilities.setCapability("appActivity", mainActivityName);//待启动APP的Activity
        capabilities.setCapability("resetKeyboard", true);//使用unicodeKeyboard  后在测试完成后恢复输入法到默认设置
        capabilities.setCapability("unicodeKeyboard", true);//使用Unicode输入法
        capabilities.setCapability("noSign", true);//设置避免重新签名
        driver = new AndroidDriver(new URL(appiumUrl), capabilities);
        driver.getContext();
    }
@Test
    public void test1(){
        driver.findElementById(BUT_1).click();//点击1
        driver.findElementById(BUT_PLUS).click();//点击+
        driver.findElementById(BUT_2).click();//点击2
        driver.findElementById(BUT_EQUAL).click();//点击等于
        int a= Integer.parseInt(driver.findElementById(BUT_RESULT).getText());//获取结果输入框的结果
        if(a==3){//判断结果是不是等于3   输出文字到控制台
            System.out.println("厉害了,这都算对了!");
        }else {
            System.out.println("厉害了,这都能算错!");
        }
    }
@AfterClass
    public void tearDown(){
    driver.quit();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章