以编程方式将Device Platform版本和操作系统版本传递给appium

时间:2017-05-25 07:30:33

标签: android ios ruby automation appium

目前,我正在为iOS和Android维护两种不同的测试套件。

目前, 如果我想在android中使用不同的设备版本运行测试,我会手动到appium并选择/更改设备版本并启动服务器 如果我想在iOS而不是android中运行测试,我会转到appium并将其更改为iOS并开始运行iOS测试。所以我们在Jenkins中有两个不同的分支,分别运行iOS和Android测试。

我想知道,如果 1.我可以以编程方式将设备版本传递给appium吗?也就是说,如果连接了6.0,appium应该识别版本,如果连接了7.0,它也应该被识别,比我去并在appium中手动更改它。我目前正在使用

deviceInfo_Hash = {
      "PLATFORM" =>  "Android",
      "DEVICE_VERSION" => system('adb shell getprop | grep build.version.release'),
      "DEVICE_MODEL" =>  system('adb devices -l'),
      "APP_VERSION"  =>  system('adb shell dumpsys package my.package | grep versionName'),
  }

获取设备的详细信息并将其存储在文件中。有没有办法将这些信息传递给appium?

有没有办法告诉appium,连接的设备是Android还是iOS?即如果安装了android,运行android步骤,如果iOS然后运行iOS测试步骤,而不是手动去改变appium中的值?目前,我正在使用,

Before do
  if  $driver.device_is_android?
    puts "Device connected is Android"
  end
end

看看连接的设备是否是android?现在,有没有办法告诉appium,在else命令中,如果它是iOS,那么如何在appium中启动iOS服务器?我们是否需要为iOS和Android提供两个不同的env.rb

如果还需要任何细节,请告诉我。

1 个答案:

答案 0 :(得分:0)

我已将env.rb更新为此,目前它似乎认出了我的设备版本和收益。

这适用于Android。

def caps
  {
      caps:{ deviceName: "Samsung",
             platformName: "Android",
             Fullreset: "false",
             Noreset: "true",
             Platformversion: system('adb shell getprop | grep build.version.release'),
             app: (File.join(File.dirname(__FILE__), "app-fs-debug.apk")),
             Packagename: "br.com.fs.ensinabyfs",
             newCommandTimeout: "3600",
             autoGrantPermissions: "true",
             appium_lib: { wait: 20,
                           debug: false,
             }
      }
  }
end