zoukankan      html  css  js  c++  java
  • Appium环境搭建

    Appium环境搭建 Java版本 

    文章转发来源 https://www.cnblogs.com/ydnice/p/5787800.html 

    一、安装node.js

    1、到官网下载node.js:https://nodejs.org/en/download/

    2、获取到安装文件后,直接双击安装文件,根据程序的提示,完成nodejs的安装。

    3、安装完成后,运行cmd,输入node –v,如果安装成功,会输出如下版本信息:v10.14.1

     

    二、配置Android sdk环境

    1、sdk环境配置:http://www.cnblogs.com/puresoul/p/4597211.html

    2、确保安装了 Level 17 或以上的版本 api

    3、设置 ANDROID_HOME 系统变量为你的 Android SDK 路径

    F:1StudyAndriod51zxw_2018-0102Sdk

    4、把 tools 和 platform-tools 两个目录加入到系统的 Path 路径里

       F:1StudyAndriod51zxw_2018-0102Sdkplatform-tools;F:1StudyAndriod51zxw_2018-0102Sdk ools

     

    三、安装手机驱动并测试连接真机

    完成上述步骤以后,为了能够让手机连接到PC端进行真机测试。还需要安装测试手机对应的驱动程序。根据手机型号提前下载相应的离线驱动并安装,之后将手机与PC通过usb线相连。在cmd中输入以下命令,如果能够看到设备,则表示安装成功。

    adb devices 

    D8Y0215B02005857

    四、安装Appium 

    1.下载安装文件:https://bitbucket.org/appium/appium.app/downloads/

    2.直接双击appium-installer.exe文件安装就好,桌面会生成一个appium的图标

     

    3.把node_modules的bin目录放到系统的Path路径里

              C:Program Files (x86)Appium ode_modules.bin

     

    4.检查appium所需的环境是否OK://参考https://blog.csdn.net/u011296485/article/details/79494110 

    进入cmd命令行,输入appium-doctor ,出现以下提示,All Checks were successful ,说明环境成功。

    ANDROID_HOME is set to "F:1StudyAndriod51zxw_2018-0102Sdk"
    JAVA_HOME is set to "D:Program Files (x86)javain."
    ADB exists at F:1StudyAndriod51zxw_2018-0102Sdkplatform-toolsadb.exe
    Android exists at F:1StudyAndriod51zxw_2018-0102Sdk oolsandroid.bat
    Emulator exists at F:1StudyAndriod51zxw_2018-0102Sdk oolsemulator.exe
    Android Checks were successful.

    All Checks were successful

    JDK环境配置:

    JAVA_HOME C:Program FilesJavajdk1.8.0_151in
    CLASSPATH .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar
    path  C:ProgramDataOracleJavajavapath;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;D:Program Files (x86)javain;D:Program Files (x86)mysqlMySQL Server 5.6in;F:1StudyAndriod51zxw_2018-0102android-sdksdk ools;F:1StudyAndriod51zxw_2018-0102Sdkplatform-tools;C:Program FilesGitcmd;C:Program Files odejs;C:UsersAdministratorAppDataLocalProgramsAppium;C:UsersAdministratorAppDataLocalProgramsAppium esourcesapp ode_modules.bin;%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools;C:Python27;C:Program Files (x86)Appium ode_modules.bin

     

    二、Appium入门实例(Java)

    、使用Eclipse直接创建案例工程

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

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

    3、输入工程名称Appium_demo,点击【Finish】

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

     

    、导入测试的类库

    1、导入Selenum类库:http://docs.seleniumhq.org/download/

        1) selenium-server-standalone-2.44.0.jar

        2) selenium-java-2.44.0.zip

    2、导入Appium类库:

        1) java-client-1.2.1.jar 

    工程需要导入4个jar包

    selenium-java-2.44.0.jar

    selenium-java-2.44.0-srcs.jar

    java-client-7.0.0.jar

    selenium-server-standalone-2.44.0.jar

    、下载测试APK 

      1、下载测试的文件ContactManager.apkhttps://github.com/appium/sample-code/tree/master/sample-code/apps/ContactManager

      2、将下载的apk放到项目的apps目录下 

    、建立package包和案例文件

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

      2、在package下新建类:ContactsTest.java,如下:  

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

     

     

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

    1、cmd输入:android avd,选择模拟器,点击【Start】即可。

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

     

     

    、 启动Appium

    方法一:cmd输入:appium

     

    方法二:

    1、直接双击appium gui图标(如下图):

    2、点击右上角的启动按钮,启动日志如下:

    、 运行测试案例:

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

     

    具体jar包可到如下网站下载:

    http://selenium-release.storage.googleapis.com/index.html?path=3.5/

    更换新的jar包后
    java-client-4.12.jar   http://maven.outofmemory.cn/io.appium/java-client/4.1.2/
    selenium-java-2.53.1.zip
    selenium-server-standalone-2.53.1.jar

    未提示config build path———修改成功

    目前不知道java-client与selenium-版本 对应关系,后续记录更改

    //测试代码贴上来:

    package com.dan.demo;

    import io.appium.java_client.AppiumDriver;

    import io.appium.java_client.android.AndroidDriver;

    import io.appium.java_client.android.AndroidElement;

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

      public class ContactsTest {

      private AppiumDriver driver;

      @Before

      public void setUp() throws Exception {

      // set up appium

      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("deviceName","D8Y0215B02005857");

      capabilities.setCapability("platformVersion", "6.0");

      capabilities.setCapability("app", app.getAbsolutePath());

      capabilities.setCapability("appPackage", "com.example.android.contactmanager");

      capabilities.setCapability("appActivity", ".ContactManager");

      //appium 与eclipise之间通信协议
      driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

      System.out.println("App is launched!");

      }

      @Test

      public void addContact(){

      WebElement el = driver.findElement(By.name("Add Contact"));

      el.click();

      List<AndroidElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");

      textFieldsList.get(0).sendKeys("Some Name");

      textFieldsList.get(2).sendKeys("Some@example.com");

      driver.swipe(100, 500, 100, 100, 2);

      driver.findElementByName("Save").click();

      System.out.println("App is done!");

      }

      @After

      public void tearDown() throws Exception {

      driver.quit();

      }

    }

    当前报错:

    org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Bad app: C:UsersAdministratoreclipse-workspaceAppium_demoappsContactManager.apk. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name. cause: Error: Error locating the app: ENOENT, stat 'C:UsersAdministratoreclipse-workspaceAppium_demoappsContactManager.apk') (WARNING: The server did not provide any stacktrace information)
    解决办法时候:

    发现可正常运行的脚本,并不需要初始化设置app路径,也即没有

    // File classpathRoot = new File(System.getProperty("user.dir"));
    //
    // File appDir = new File(classpathRoot, "/apps");
    //
    // File app = new File(appDir, "ContactManager.apk");
    //
    // capabilities.setCapability("app", app.getAbsolutePath());

    参考https://www.jianshu.com/p/7382f875b6aa 

    到此第一个自动化脚本开发完成 
     
    /****************贴上自动测试计算器的代码********************/
     

    package com.dan.demo;

    import java.net.MalformedURLException;
    import java.net.URL;

    import org.openqa.selenium.By;
    import org.openqa.selenium.remote.DesiredCapabilities;

    import io.appium.java_client.android.AndroidDriver;


    public class CalculatorTest {
    public static void main(String[] args) throws MalformedURLException, InterruptedException {

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "D8Y0215B02005857");
    capabilities.setCapability("automationName", "Appium");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "6.0");
    capabilities.setCapability("appPackage", "com.android.calculator2");
    capabilities.setCapability("appActivity", ".Calculator");

    AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

    driver.findElement(By.name("1")).click();
    driver.findElement(By.name("5")).click();
    driver.findElement(By.name("9")).click();
    driver.findElement(By.name("delete")).click();
    driver.findElement(By.name("+")).click();
    driver.findElement(By.name("6")).click();
    driver.findElement(By.name("=")).click();
    Thread.sleep(2000);

    String result = driver.findElement(By.id("com.android.calculator2:id/formula")).getText();
    System.out.println(result);

    driver.quit();
    }
    }

  • 相关阅读:
    Django(28)Django模板介绍
    Django(27)Django类视图添加装饰器
    HTTP协议-返回结果的HTTP状态
    HTTP协议二
    HTTP协议 一
    HTTP 协议用于客户端和服务器端之间 的通信
    Net分布式系统之一:系统整体框架介绍
    数据结构-实现正负数重新排序
    数据结构-合并两个已经排序的数组
    数据结构-查找第一个没有重复的数组元素
  • 原文地址:https://www.cnblogs.com/smartwen666/p/10499763.html
Copyright © 2011-2022 走看看