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 )第三期 --如何自定义编译
时间: 2024-10-08 20:42:06

Appium 走过的坑( Mac+java )--Android 篇的相关文章

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

最近随着手机测试盛行,经朋友推荐,selenium的新家庭成员Appium算比较好用的一款自动化手机测试工具.本想,selenium出的东西都是好东西,IDE-->RC-->WebDriver-->PhantomJS,个个都是好东西,当然其中有些不适selenium做的,算半个推荐,但真心不错,那这个Appium也不会差吧...抱着试试的心态,开始了踏坑之旅.下面就让我描述下我走过的坑: 首先先说下环境: Mac pro (OS X 10.10.3) Java (1.6 , 后续会介绍怎

Appium 走过的坑( Mac+java )第三期 --如何自定义编译

前面都讲了一些环境搭建,接下来开始说说如何定位: 在之前,我们安卓的测试案例为例,提到了我们用到一个apk来测试,那么,接下来问题就是,我们如果有这样个apk,但是怎么测试呢? 回到之前appium配置界面 在图标出的地方选择你apk的位置 勾选此处,记住,得先stop appium,不然上面2个图所示部分均为灰色,不可操作! 好了,让我们再次打开appium(安卓虚拟机不要关,保持打开状态) 点击appium界面上的??按钮 会弹出一个新界面框(如果报出500,可能是你的安卓虚拟机没有正常开启

Appium 1.6.4 环境搭建流程(Java, Android+IOS, Windows+Mac)

Appium1.6.4已经出来一段时间了,快速给大家串一下怎么搭建,贴了下载链接 1 基础环境: Windows + Mac: Java JDK 1.8+ (需配置环境变量),Appium1.6.4的依赖是Java1.8,建议用最新的: http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK (需配置环境变量),这个是需要FQ的,建议还是百度装个压缩版的吧: https://developer.

Appium for Mac 环境准备篇

1 Appium for Mac 环境准备篇[原文地址:http://www.cnblogs.com/oscarxie/p/3894559.html] 1.1 java guowenxie-macbookair:~ guowenxie$ java -versionjava version "1.8.0_05"Java(TM) SE Runtime Environment (build 1.8.0_05-b13)Java HotSpot(TM) 64-Bit Server VM (bui

Java(Android)线程池---基础篇

1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? 1 newThread(newRunnable(){ 2 3 @Override 4 publicvoidrun(){ 5 // TODO Auto-generated method stub 6 } 7 }).start(); 那你就out太多了,new Thread的弊端如下: a. 每次new Thread新建对象性能差.b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致

android自动化测试--appium运行的坑问题及解决方法

问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress  之前的会话没有关闭,然后你又运行了测试实例,也没有设置覆盖. 解决: 1. 重新停止appium服务,开启Appium服务 2. 在Genarel Setting那里设置覆盖Session,重启Appium 测试结束在AfterClass加driver.quit() 2.

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过