首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何建立Android自动化的应用环境?

如何建立Android自动化的应用环境?
EN

Stack Overflow用户
提问于 2013-07-25 15:14:54
回答 5查看 46.1K关注 0票数 18

我在测试中做SD的工作。我是新来的Appium自动化工具,这个工具很难为我设置环境。

我参考了以下链接:http://unmesh.me/category/appium/

这个链接帮助我通过命令行安装Node.js和appium。但我不确定这样做是正确的。

我从命令行收到以下消息:

代码语言:javascript
复制
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工具运行测试用例?
EN

回答 5

Stack Overflow用户

发布于 2013-08-01 16:28:51

第一部分:-您似乎已经使用节点server.js启动了appium服务器--您可以通过在浏览器中访问localhost:4723/wd/hub/status来检查服务器,这将返回服务器的一些详细信息。你已经做过了。

命令输出将如下所示,确认服务器已启动:

代码语言:javascript
复制
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或c#或任何您的语言选择。我使用了c#,并可以提供示例,这对于您的测试应该是类似的。

要将selenium添加到c#类:using OpenQA.Selenium.Remote;中,可以将所有数据传递给selenium所需的功能对象。存在一些自定义所需的功能,如:

  • “app - package”这是应用程序包的名称,比如com.myapp.main,
  • “app - activity”是应用程序的主要活动,它也将启动该应用程序。这通常是一种飞溅的活动或主要的活动,
  • “等待-活动”是Appium一旦启动就会检查的活动,这将是应用程序活动,但对于我来说,如果在某些测试中启动了一个新的活动,它就不同于所谓的活动,
  • “版本”采用android版本,
  • “设备ID”使用您的附加设备或AVD命令和应用程序,这将有一个本地路径,您希望安装的apk。这是签署和安装在启动,如果一个辞职的应用程序已经存在,它将跳过这为您。 DesiredCapabilities caps =新DesiredCapabilities();caps.SetCapability("app-package","com.myapp.test");caps.SetCapability("browserName",“com.myapp.test”);caps.SetCapability("device","Android");caps.SetCapability("app-activity","com.myapp.SplashActivity");caps.SetCapability("takesScreenshot",真);caps.SetCapability("version","4.1.2");Caps.SetCapability(“设备ID","uniquedeviceid");caps.SetCapability("app",@"C:\path to\app\on\pc\app.apk");

按照创建的功能,创建一个远程web驱动程序对象,传递您使用过的集线器url,例如http://localhost:4723/wd/hub和所创建的所需功能。

代码语言:javascript
复制
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4723/wd/hub/"), caps);

这一行使用Appium服务器的ip或主机开始侦听请求。对我来说,这一步标志,安装和启动应用程序的附加设备,希望这将对你同样的工作。这就是您编写的selenium测试连接到Appium服务器的地方。

现在,使用创建的driver对象,您可以访问selenium命令,Appium已经为android测试实现了许多替代方法。在每个过程中,您的Appium服务器控制台窗口都应该显示是否存在任何问题。

输出将进行颜色编码,以帮助从此窗口识别故障,但您可以自己处理这些问题,并在需要时输出到文件中。

对于多个设备的更新--我不确定是否使用了多个设备--我认为硒栅之前尝试向一台机器添加2台设备并进行测试时出现了混淆,在这种情况下,亚行无法区分配置和命令中添加的设备id。Appium团队一直在进行改进,以向服务器添加网格功能,我建议您查看一下Appium网格 (链接更新)。

我很抱歉,我缺乏与网格的经验,以进一步协助您。

你好,布莱恩

票数 16
EN

Stack Overflow用户

发布于 2014-12-16 06:53:55

这似乎是迟来的回复,但我仍然认为这篇文章可以帮助一些人,他们正在逐步寻找在Windows平台上安装Appium的指南

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

此链接主要处理以下部分:

  1. JDK安装
  2. Android安装路径设置
  3. Appium装置 ( a)使用node.js ( b)使用Appium.exe
票数 4
EN

Stack Overflow用户

发布于 2013-09-26 21:20:01

这是我的android的env.rb文件。

代码语言:javascript
复制
 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17861998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档