博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Appium--入门demo

Posted on 2017-06-12 11:28  红与黑hyh  阅读(139)  评论(0编辑  收藏  举报

  Appium环境搭建已经在在博客中写出

那么本篇博客主要介绍java版本的appium入门demo。在开始demo之前,Android模拟器要安装好,其实模拟器就是模拟器真机,除了不能打电话和发信息,其他应该都可以的。模拟器的话在这里还可以安装genymotion,其实它不是普通的模拟器,严格来说,genymotion是虚拟机,被网传定义为模拟器。想安装这款模拟器的话。我在这里提供安装文件地址 http://yun.baidu.com/s/1pJC6ve7 和我自己在官网上注册号的账号和密码:feimao ,feimao12345。genymotion安装文件比较多,效果确实比前面AVD.exe模拟器要快些。我就不再赘述模拟器了,下面开始正式appium入门demo。

 

使用Eclipse创建demo工程

 

    1.打开Eclipse,【File】-->【New】-->【Project】

    2.选择【Java Project】-->【Next】

    3.输入工程名称AppiumDemo,点击【Finish】

     

    4.右键点击工程 New-Folder,新建两个文件夹:apps和libs,目录结构如下:

     

 

导入测试的类库

 

    由于Appium 驱动苹果的 UIAutomation 库和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 协议。所以selenium类库是要导入的。

    1.Selenum2类库: http://seleniumhq.org/downlod

   

    做过selenium自动化的朋友这块应该是熟悉的,就不多讲了。

    2.Appium类库: http://appium.io/downloads.html

    3.右键点击工程空白处,选择【Build Path】-->【Configure Build Path】

  

    selenium的类库我导入比较多哈,不影响的。

 

下载测试APK

 

    1.下载测试的文件

    ContactManager.apk  https://github.com/appium/sample-code/tree/master/sample-code/apps/ContactManager

    2.将下载的apk直接复制黏贴到项目的apps目录下

    

 

建立package包和demo文件

 

    1.在src文件夹上右键单击,【New】-->【package】,输入包名: com.feimao.demo,点击【Finish】

    2.在package下新建类:ContactTest.java

    下载地址如下:  

    https://github.com/appium/sample-code/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium

    代码如下:

  

复制代码
package com.feimao.demo;

import java.io.File;
import java.net.URL;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

public class ContactTest {
    private AndroidDriver driver; 
    @Before
    public void setUp() throws Exception {
        //设置apk的路径
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "apps");
        File app = new File(appDir, "ContactManager.apk");
        
        //设置自动化相关参数
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Android Emulator");
        
        //设置安卓系统版本
        capabilities.setCapability("platformVersion", "4.4.2");
        //设置apk路径
        capabilities.setCapability("app", app.getAbsolutePath()); 
        
        //设置app的主包名和主类名
        capabilities.setCapability("appPackage", "com.example.android.contactmanager");
        capabilities.setCapability("appActivity", ".ContactManager");
         
        //初始化
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);       
    }
 
    @Test
    public void addContact(){
        WebElement el = driver.findElement(By.name("Add Contact"));
        el.click();
        List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
        textFieldsList.get(0).sendKeys("feimaoyuzhubaobao");
        textFieldsList.get(2).sendKeys("forever together");
        driver.swipe(100, 500, 100, 100, 2);
        driver.findElementByName("Save").click();
    }    
    
    @After
    public void tearDown() throws Exception {
        driver.quit();
    }
}
复制代码

 

 

 启动Android模拟器(也可以连接真机)

 

    1.cmd输入:android avd,选择模拟器,点击【Start】即可。如果你在eclipse中集成了插件,那么在eclipse中也可以直接启。

    

    

 

    2.启动好后,cmd输入:adb devices,确定设备是否连接上,如下图连接成功:

    

 

 启动Appium

 

     1.由于之前安装好了appium,那么直接双击,然后点击启动按钮

    

 

    2.cmd命令,appium 启动

    

 

运行Appium入门demo

 

    1.在eclipse中,项目右键>【Run As】>【JUnit Test】,运行过程如下: 

     

 

    到这里appium的入门demo已经全部写完了,这只是一个模拟呼叫联系人的例子,然后可以模拟此demo,写登录啊、定位元素啊等等。appium定位元素的方法貌似有9种,后续还会写一些工作中的例子和解决appium问题的方法。另外还可以去官网上下载源代码来看,看它的原理,看它的API等。