【问题标题】:Disable appium debug when running test运行测试时禁用appium调试
【发布时间】:2015-03-17 18:08:50
【问题描述】:

我在 rspec 之上运行我的 appium 测试,并且在检查/操作元素时总是收到调试消息,这确实令人困惑。 有没有办法禁用它?我试图强制功能(debug=false,logLevel="info")但没有运气。此外,当服务器在非调试模式下运行时,我的测试输出仍然会收到调试消息。

我在开始测试时得到了这个:

     :caps => {
         :platformName => "android",
           :deviceName => "Android Emulator",
    :newCommandTimeout => 999999,
                  :app => "/Users/kriz/Workspace/builds/my_app.apk",
              :noReset => "true",
            :fullReset => "false",
                :debug => "false",
            :log_level => "info"
}
Debug is: true
Device is: android
post /sessionpost /session

【问题讨论】:

    标签: ruby rspec appium


    【解决方案1】:

    运行 appium 时,您可以使用 --log-level 标志通过将级别设置为警告/错误来抑制调试消息:

    appium --log-level warn

    【讨论】:

    • 是的,我知道,但这不会使消息在我的控制台上消失。我也在尝试信息级别。没有效果:(。
    • 调试消息来自启动 rspec 的控制台,而不是其他控制台。
    【解决方案2】:

    在 desired_capabilities 哈希的 appium_lib 部分中包含 debug: false。

    desired_capabilities = {
      caps: {
        platformName: "iOS",
        versionNumber: '8.1',
        deviceName: device,
        app: APP_PATH,
      },
      appium_lib: {
        debug: false,
      }
    }
    

    这些选项的文档参差不齐,但至少在代码中对它们进行了很好的注释。 https://github.com/appium/ruby_lib/blob/master/lib/appium_lib/driver.rb

    【讨论】:

      【解决方案3】:

      在 Java 中:

      在启动 Appium 服务器时设置以下配置:

      DesiredCapabilities cap = new DesiredCapabilities();
          cap.setCapability("noReset", "true");
          int port = 4543; // use any not used port number
          //Build the Appium service
          builder = new AppiumServiceBuilder();
      
          builder.withIPAddress("0.0.0.0");
          builder.usingPort(port);
          builder.withCapabilities(cap);
          **builder.withArgument(GeneralServerFlag.LOG_LEVEL, "warn");** // this is the flag to remove debug logs
          AppiumDriverLocalService service = AppiumDriverLocalService.buildService(builder);
          service.start();
      

      【讨论】:

        【解决方案4】:

        您可以使用以下对我有用的代码行:

        AppiumDriverLocalService service;
        AppiumServiceBuilder serviceBuilder;
        
        serviceBuilder = new AppiumServiceBuilder();
                serviceBuilder.usingAnyFreePort();
                serviceBuilder.usingDriverExecutable(new File("/usr/local/bin/node"));
                serviceBuilder.withAppiumJS(new File("/usr/local/bin/appium"));
                serviceBuilder.withLogFile(new File("./appiumLogs/appiumLogs"+System.currentTimeMillis()));
        
            HashMap<String, String> environment = new HashMap();
            environment.put("PATH", "/usr/local/bin:" + System.getenv("PATH"));
            serviceBuilder.withEnvironment(environment);
        
            service = AppiumDriverLocalService.buildService(serviceBuilder);
            service.start();
            service.clearOutPutStreams();
        

        它将日志保存在提到的文件路径中,并清除控制台输出日志。

        【讨论】:

        • 是的!这部分service.clearOutPutStreams() 解决了我的问题! Appium 日志现在不会弄乱我的 IntelliJ 控制台,但日志已正确添加到定义的日志文件中。谢谢!
        猜你喜欢
        • 2017-11-07
        • 2020-11-06
        • 1970-01-01
        • 2021-01-16
        • 2014-04-05
        • 2013-10-31
        • 2016-10-17
        • 2015-01-07
        • 1970-01-01
        相关资源
        最近更新 更多