Как настроить среду Appium для автоматизации Android?

Я работаю как SD в тесте. Я новичок в инструменте Appium Automation, этот инструмент очень сложно настроить для меня.

Я сослался на следующую ссылку: http://unmesh.me/category/appium/

Эта ссылка помогла мне установить Node.js и appium через командную строку. Но я не уверен, что это правильно.

Я получил следующее сообщение из командной строки:

mani-kandans-MacBook-Pro:platform-tools manikandan$ info: Welcome to Appium v0.8.2 (REV e9cc66197ad6a3496322bd77a8699509fc761b69)
info: Appium REST http interface listener started on 0.0.0.0:4723
   info  - socket.io started

После этого я понятия не имею. Как написать тестовый сценарий и запустить его через Appium?

Если вы заинтересованы поделиться своими знаниями об инструменте Appium. Пожалуйста, ведите меня.

  1. Как установить Appium?
  2. Как запустить тест-кейс через инструмент Appium?

Ответы

Ответ 1

Часть первая: -. Кажется, вы запустили appium-сервер, используя node server.js - Вы можете проверить сервер, перейдя в localhost:4723/wd/hub/status в своем браузере, это вернет несколько деталей сервера. Вы уже это сделали.

Вывод команды будет выглядеть так, чтобы подтвердить, что сервер запущен:

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

Часть вторая:. Затем вы используете Selenium RC для Python, Java или С# или независимо от вашего выбора языка. Я использовал С# и могу предоставить примеры, которые должны быть похожими для ваших тестов.

Чтобы добавить селен в класс С#: using OpenQA.Selenium.Remote;  Вы передаете все свои данные объекту желаемых возможностей селена. Существуют некоторые пользовательские требуемые возможности, такие как:

  • 'app-package' - это имя пакета приложения, такое как com.myapp.main,
  • "приложение-активность", которое называется основной деятельностью приложений, которая также запустит приложение. Это часто действие всплеска или основной активности,
  • "wait-activity" - это активность, которую Appium будет проверять после запуска, это будет активность приложения, но для меня это другое, если для некоторых тестов запускается новая активность, чем называется,
  • 'version', взяв версию для Android,
  • 'ID устройства', чтобы подключить ваше устройство или AVD к команде и приложению, которые будут иметь локальный путь к apk, который вы хотите установить. Это будет подписано и установлено при запуске, если уже существующее приложение уже существует, оно пропустит это для вас.

        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");
    

Следуя созданным возможностям создайте объект удаленного веб-драйвера, передав URL-адрес концентратора, который вы использовали, например http://localhost:4723/wd/hub и созданные вами желаемые возможности.

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

В этой строке используется ip или хост сервера Appium для начала прослушивания запросов. Для меня этот шаг подписывает установку и запускает приложение на подключенном устройстве, надеюсь, это будет работать для вас одинаково. Вот где тесты селена, которые вы пишете, подключены к серверу Appium.

Теперь, используя созданный объект driver, вы можете получить доступ к командам selenium rc, из которых Appium реализовала множество альтернатив для тестирования Android. Во время каждого из них окно консоли сервера Appium должно показать вам, есть ли какие-либо проблемы.

Выход будет закодирован цветом, чтобы помочь в выявлении сбоев из этого окна, но вы можете обрабатывать их по-своему и выводить в файл, если это необходимо.

Обновление для нескольких устройств Я не уверен в использовании нескольких устройств, я бы рассмотрел селеновую сетку мои предыдущие попытки добавить 2 устройства к одной машине, и у теста возникла путаница, когда adb не смог различить независимо идентификатора устройства, дополняющего конфигурацию и команды. Команда Appium улучшает добавление функций сетки на сервер, я рекомендую вам взглянуть на Appium Grid (ссылка обновлена)

Я прошу прощения за отсутствие у меня опыта работы с сеткой, чтобы помочь вам в дальнейшем.

С уважением, Брайан

Ответ 2

Похоже, что поздно ответить, но все-таки я думаю, что это сообщение может помочь кому-то, кто ищет шаг за шагом по руководству по установке Appium на платформе Windows

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

Эта ссылка в основном касается следующих разделов

  • Установка JDK
  • Установка пути установки Android SDK
  • Установка Appium

    a) Используя node.js

    b) Использование Appium.exe

Ответ 3

Вот мой файл env.rb для 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

Ответ 4

Чтобы установить Appium, сначала загрузите все необходимые инструменты:

  1. Android Studio
  2. Файлы Appium Jar для Java
  3. Клиентский плагин Java Selenium
  4. Сервер Appium
  5. Java SDK

После загрузки всех этих инструментов выполните пошаговое упоминание в этом блоге:

Процесс установки Appium в Android Studio