• 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 )第三期 --如何自定义编译
  • 相关阅读:
    创建react项目
    解决移动端弹窗下页面滚动问题
    前端常用的几种加密方式
    http请求状态码
    vue代理配置
    自动化测试实操案例详解 | Windows应用篇
    Google 再见 Java
    一次诡异的 SQL 数量统计查询不准的问题
    Maven
    淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路
  • 原文地址:https://www.cnblogs.com/leonxiaosi/p/4610914.html
Copyright © 2020-2023  润新知