Appium 走过的坑( Mac+java )--Android 篇

Apple的坑走完后,终于打开了界面,想想还是有点小激动的,然后进入了更坑的Android环境搭建。

如果你以为这环境就和Apple这样easy能解决(虽然不少坑 - -),那就大错特错,android环境等于另外一套东西,比Apple难弄多了,机制也很傻。。。

牢骚话少说,咱们来跨坑,第一个坑随即而来,之前我在说Apple环境时,下载安装完appium工具,Apple环境自动已经完善(前提是你已经安装完xcode)。那么android环境应该怎么配置呢?

我就绕过我求寻真理的沼泽了,直接说怎么配吧:

先去网上下载一个sdk

https://developer.android.com/sdk/index.html

在这个页面下下载工具或者下载sdk都可以,建议下载工具,虽然不用(也是有原因的。。。这傻工具不认我配的1.8 jdk,好像只认默认路径的1.6和1.7,算了不研究它了)

安装完后,配置环境变量:

进入/etc/ , 编辑profile文件(注意:需要用sudo 命令编辑文件)

export ANDROID_HOME=/Users/"username"/Library/Android/sdk

如果是只下载sdk,解压出来普遍好像放到/usr/local/sdk,具体自己看,放哪里其实没啥关系

保存关闭(命令:wq!)

source profile

安全点就重启下,然后打开终端确认下是否有用

cd $ANDROID_HOME

检查下是不是进入了sdk的目录,如果是,恭喜,又跨过了一个坑。

接下来就是打开工具了:

cd tools

./android

会打开一个新东西:

说白了,这个就是类似下载驱动的东西,那能下就下吧,如果觉得慢,就下几个自己用的到的版本(我是全下了- -。。。)

搞定后,注意这个sdk manager的一些配置选项,有个tools目录(左上角):

点击tools然后点击下拉框中的manager avds

很好,又出来一个新东西:

Create一个新的,我选的版本是安卓4.4.2版本,选项很简单,不要太多关注,内存之类的300足矣,能开就行,保存好,就start吧。

打开之后如图:

安卓机已起,还等什么,打开appium,点击doctor,看看还有没有问题,一切OK,只欠junit了,来段官方脚本:

import static org.junit.Assert.*;

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

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

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.DesiredCapabilities;


public class AppiumAndroidTest {
    
    private AppiumDriver dr;

    @Before
    public void setUp() throws Exception {
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin");
        File app = new File(appDir, "ApiDemos-debug.apk");
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName","Android Emulator");
        capabilities.setCapability("platformVersion", "4.4");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("appPackage", "io.appium.android.apis");
        capabilities.setCapability("appActivity", ".ApiDemos");
        dr = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @After
    public void tearDown() throws Exception {
        dr.quit();
    }

    @Test
    public void test() {
        WebElement el = dr.findElement(By.name("Animation"));
        assertEquals("Animation", el.getText());
        el = dr.findElementByClassName("android.widget.TextView");
        assertEquals("API Demos", el.getText());
        el = dr.findElement(By.name("App"));
        el.click();
        List<WebElement> els = dr.findElementsByClassName("android.widget.TextView");
        assertEquals("Activity", els.get(2).getText());
    }

}

抄归抄,但我也看了下,发觉一个问题,这两行代码是啥意思:

File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin");
        File app = new File(appDir, "ApiDemos-debug.apk");

理解了下,就是添加本地的apk,那这个文件在哪里呢,拉官方教程的时候,到的确有apps文件夹,找一下,那怎么融进去呢,放的目录对不对呢

根据代码的写法,这apps目录是写到了user根目录,那好吧,咱就cp一份过来,放到~目录

好了,自此,我们可以跑代码了,记得将appium,android虚拟机,都开出来,

"platformName", "Android"  ----这里对应好自己虚拟机的名称。

恭喜,终于都跑起来了,接下来,坑又来了,怎么获取元素,我怎么才能自己写一套自己想要的自动化脚本出来呢,请待Appium 走过的坑( Mac+java )第三期 --如何自定义编译

posted on 2015-06-30 16:31  IT Ⅳ  阅读(504)  评论(0编辑  收藏  举报

导航