How to setup Appium Environment for Android Automation?

前端 未结 4 1972
别那么骄傲
别那么骄傲 2020-12-23 15:31

I am working as SD in Test. I am new to Appium Automation tool, this tool is very tricky to set up environment for me.

I referred following link: http://unmesh.me/c

相关标签:
4条回答
  • 2020-12-23 15:38

    Part One:-. You appear to have launched the appium server using node server.js - You can check the server by going to localhost:4723/wd/hub/status in your browser this will return a few details of the server. You have already done this.

    The command output will look like this confirming that the server is started:

    info: Welcome to Appium v0.8.1 (REV ***********************************)
    info: Appium REST http interface listener started on 0.0.0.0:4723
           info  - socket.io started
    

    Part Two:-. Next you use the selenium RC for Python, Java, or c# or whatever your language choice. I used c# and can provide examples this should be similar for your tests.

    To add the selenium to a c# class: using OpenQA.Selenium.Remote; You pass all your data to a selenium desired capabilities object. Some custom desired capabilities exist such as:

    • 'app-package' this is the app package name such as com.myapp.main,
    • 'app-activity' which is the apps main activity to be called which will also launch the app. This is often a splash activity or main activity,
    • 'wait-activity' is the activity that Appium will check for once launched, this would be the app-activity but for me it is different if for some tests a new activity is launched than is called,
    • 'version' taking the android version,
    • 'device ID' taking your attached device or AVD to command and app which will have a local path to the apk you wish to install. This is signed and installed on start-up if a resigned app already exists it will skip this for you.

          DesiredCapabilities caps = new DesiredCapabilities();
          caps.SetCapability("app-package", "com.myapp.test");
          caps.SetCapability("browserName", "");
          caps.SetCapability("device", "Android");
          caps.SetCapability("app-activity", "com.myapp.SplashActivity");
          caps.SetCapability("takesScreenshot", true);
          caps.SetCapability("version", "4.1.2");
          caps.SetCapability("device ID", "uniquedeviceid");
          caps.SetCapability("app", @"C:\path to\app\on\pc\app.apk");
      

    Following the Capabilities you create create a remote web driver object passing the hub url that you've used e.g http://localhost:4723/wd/hub and the Desired Capabilities you've created.

    RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4723/wd/hub/"), caps);
    

    This line uses the ip or host of the Appium server to begin listening for requests. For me this step signs installs and launches the app on the attached device hopefully this will work for you the same. This is where the selenium tests you write are connected to the Appium server.

    Now using the created driver object you can access the selenium rc commands of which Appium has implemented many alternatives for android testing. During each of these your Appium server console window should show you if there is any issues.

    Output will be colour coded to assist in identifying failures from this window but you can handle these your own way and output to a file if needed.

    Update for multiple devices I am unsure on the use of multiple devices, I would consider selenium grid my previous attempts to add 2 devices to one machine and test had confusion where adb was unable to distinguish regardless of the device id addition to the configuration and commands. The Appium team have been making improvements to add grid functionality to the server, I recommend you have a look into Appium Grid (link updated)

    I apologize for my lack the experience with grid to assist you further.

    Regards, Brian

    0 讨论(0)
  • 2020-12-23 15:43

    It seems to be late reply, but still I guess this post can help some one, who are looking for step by step by guide to install Appium on Windows platform

    http://qaautomationworld.blogspot.in/2014/12/appium-setup-for-android-windows.html

    This link mainly deals with the following sections

    1. JDK Installation
    2. Android SDK Installation path setup
    3. Appium Installation

      a) Using node.js

      b) Using Appium.exe

    0 讨论(0)
  • 2020-12-23 15:45

    Here's my env.rb file for appium android.

     require 'rubygems'
    require 'appium_lib'
    
    # Start Android driver
    apk = {
        device: :android,
        app_path: (true && ENV['apk']) || 'path to apk',
        app_package: (true && ENV['package']) || 'com.foo.cam',
        app_activity: (true && ENV['activity']) || '.SplashActivity',
        app_wait_activity: (true && ENV['activity']) || '.MainActivity',
    }
    Appium::Driver.new(apk).start_driver
    
    Appium.promote_appium_methods Object
    
    log = Logger.new(STDOUT)
    
    case ENV['log']
      when 'WARN'
        log.level = Logger::WARN
      when 'DEBUG'
        log.level = Logger::DEBUG
      when 'INFO'
        log.level = Logger::INFO
      when 'ERROR'
        log.level = Logger::ERROR
      when 'FATAL'
        log.level = Logger::FATAL
      when 'UNKNOWN'
        log.level = Logger::UNKNOWN
      else
        log.level = Logger::DEBUG
    end
    
    log.debug('starting suite')
    
    Before do
      @test_env = {
          device: driver,
          main_activity: (true && ENV['main_activity']) || 'grid.GridLoginActivity',
          logger: log
      }
    end
    
    # Optional--clears alerts 
    After ('@rate_limit') do |scenario|
      log = @test_env[:logger]
      device = @test_env[:device]
    
      if scenario.failed?
        begin
          wait = Selenium::WebDriver::Wait.new :timeout => 1
          wait.until { device.alert_accept }
          log.debug('cleared rate limit dialog')
        rescue
          log.error("dialog didn't pop.")
        end
      end
    
      log.debug('rate_limit finished')
    end
    
    After ('@network_connection') do |scenario|
      log = @test_env[:logger]
      device = @test_env[:device]
    
      if scenario.failed?
        begin
          wait = Selenium::WebDriver::Wait.new :timeout => 1
          wait.until { device.alert_accept }
          log.debug('cleared network connection issue')
        rescue
          log.error("dialog didn't pop.")
        end
      end
    
      log.debug('network_connection finished')
    end
    
    0 讨论(0)
  • 2020-12-23 15:46

    To install Appium first up all Download Required Tools:

    1. Android Studio
    2. Appium Jar Files For Java
    3. Java Selenium Client Plugin
    4. Appium Server
    5. Java SDK

    After downloading all these tools follow step by step process mention in this blog:

    Installation Process of Appium in Android Studio

    0 讨论(0)
提交回复
热议问题