【问题标题】:Appium error: Logcat capture failed: spawn ENOENT With Android StudioAppium 错误:Logcat 捕获失败:使用 Android Studio 生成 ENOENT
【发布时间】:2018-02-24 06:52:51
【问题描述】:

我正在使用 Android Studio 中的 Appium + WebDriver 为 Android 模拟器运行一个简单的计算器测试。我已经手动启动了 Appium Server 和 Android Emulator,然后使用 TestNG.xml 运行测试。

这是我的示例 WebDriver 代码 -

package com.example.user.mysampleapp2;

/**
 * Created by CParmar on 14-09-2017.
 */

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.testng.annotations.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;

public class SampleTests {
    public WebDriver driver;

    @BeforeClass
    public void setUp() throws MalformedURLException {
        // Created object of DesiredCapabilities class.
        DesiredCapabilities capabilities = new DesiredCapabilities();

        // Set android deviceName desired capability. Set your device name.
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Nexus_6_API_25");

        // Set BROWSER_NAME desired capability. It's Android in our case here.
        capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Android");

        // Set android VERSION desired capability. Set your mobile device's OS version.
        capabilities.setCapability(MobileCapabilityType.VERSION, "7.1.1");

        // Set android platformName desired capability. It's Android in our case here.
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);

        // Set android appPackage desired capability. It is
        // com.android.calculator2 for calculator application.
        // Set your application's appPackage if you are using any other app.
        capabilities.setCapability("appPackage", "com.android.calculator2");

        // Set android appActivity desired capability. It is
        // com.android.calculator2.Calculator for calculator application.
        // Set your application's appPackage if you are using any other app.
        capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");

        // Created object of RemoteWebDriver will all set capabilities.
        // Set appium server address and port number in URL string.
        // It will launch calculator app in android device.
        driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

    @Test
    public void testFirstCalculator() {

        // Click on DELETE/CLR button to clear result text box before running test.
        driver.findElements(By.xpath("//android.widget.Button")).get(0).click();

        // Click on number 2 button.
        driver.findElement(By.name("7")).click();

        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    }

    @AfterClass
    public void End() {
        driver.quit();
    }
}

当我从 Android Studio 运行它时,我遇到了 Appium 错误。

使用命令启动 Appium 服务器:C:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-版本 23 --automation-name Appium --log-no-color 信息:欢迎使用 Appium v​​1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d) 信息:Appium REST http 接口监听器开始于 127.0.0.1:4723 信息:[调试]非默认服务器参数:{“address”:“127.0.0.1”,“logNoColors”:true,“platformName”:“Android”,“platformVersion”:“23”,“automationName”:“Appium "} 信息:控制台日志级别:调试 info: --> POST /wd/hub/session {"desiredCapabilities":{"appPackage":"com.android.calculator2","appActivity":"com.android.calculator2.Calculator","browserName":"Android ","platformName":"Android","deviceName":"Nexus_6_API_25","version":"7.1.1"},"requiredCapabilities":{},"capabilities":{"desiredCapabilities":{"appPackage": "com.android.calculator2","appActivity":"com.android.calculator2.Calculator","browserName":"Android","platformName":"Android","deviceName":"Nexus_6_API_25","version": "7.1.1"},"requiredCapabilities":{},"alwaysMatch":{"browserName":"Android","platformName":"Android"},"firstMatch":[]}} 信息:客户端用户代理字符串:Apache-HttpClient/4.5.3 (Java/1.8.0_131) info: [debug] 提供了以下所需功能,但 appium 无法识别。它们将被传递到此服务器上运行的任何其他服务。 : 版本 信息:[调试] 没有得到应用程序但得到了 Android 包,将尝试在设备上启动它 信息:[调试] 创建新的 appium 会话 42818f6f-0677-486a-bc53-efa31009bbe7 信息:启动 android appium 信息:[调试] 获取 Java 版本 信息:Java 版本为:1.8.0_131 info: [debug] 检查 adb 是否存在 警告:ANDROID_HOME 环境变量未设置为 Android SDK 根目录路径。与 SDK 23+ 兼容需要 ANDROID_HOME。沿着 PATH 检查 adb。 info: [debug] 执行 cmd: where adb 信息:[调试] 使用 C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe 中的 adb

警告:没有应用功能,无法解析包/活动 信息:[调试] 使用快速重置?真的 信息:[调试] 为会话准备设备 信息:[调试]不检查应用程序是否存在,因为我们假设它已经在设备上 信息:检索设备 信息:[调试] 尝试查找已连接的 android 设备 信息:[调试]正在连接设备... 信息:[调试] 执行 cmd:“C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe”设备 信息:[调试] 1 个设备已连接 信息:找到设备模拟器-5554 信息:[调试] 将设备 ID 设置为 emulator-5554 信息:[调试] 等待设备准备好并响应 shell 命令(超时 = 5) 信息:[调试] 执行 cmd:“C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe”-s emulator-5554 等待设备 信息:[调试] 执行 cmd:“C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe”-s emulator-5554 shell “echo 'ready'” 信息:[调试] 启动 logcat 捕获 错误:Logcat 捕获失败:spawn "C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe" ENOENT info: [debug] 停止 logcat 捕获

我浏览了论坛上所有可用的帖子,还在 Android Studio 运行配置 (Android_Home) 中使用 SDK 路径设置 ANDROID_HOME 变量。我仍然收到此错误。

有什么帮助吗?

谢谢, 钱德雷什·帕尔玛

【问题讨论】:

    标签: android selenium-webdriver android-emulator appium


    【解决方案1】:

    您可以按照这些answers 修复正在设置的ANDROID_HOME 环境变量。 同时,我建议安装 appium-doctor 并在执行 appium 测试之前检查您的环境设置中缺少的内容。

    在你的情况下:

    npm install appium-doctor -g
    appium-doctor --android
    

    您期望得到的回应是:

    ### Diagnostic starting ###
    ✔ The Node.js binary was found at: /usr/local/bin/node
    ✔ Node version is 7.9.0
    ✔ ANDROID_HOME is set to: /Users/<user>/Library/Android/sdk
    ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    ✔ adb exists at: /Users/<user>/Library/Android/sdk/platform-tools/adb
    ✔ android exists at: /Users/<user>/Library/Android/sdk/tools/android
    ✔ emulator exists at: /Users/<user>/Library/Android/sdk/tools/emulator
    ✔ Bin directory of $JAVA_HOME is set
    ### Diagnostic completed, no fix needed. ###
    

    修复所有x 标记,祝你好运

    【讨论】:

      【解决方案2】:

      从错误日志中可以清楚地看到,ANDROID_HOME环境变量没有设置。

      例如:您在“C:\Users\YourUserName\AndroidSDK”中安装了 Android SDK,那么 ANDROID_HOME 路径的值将是相同的路径。

      只需添加名称为 ANDROID_HOME 和值作为路径的新环境变量。

      还有你的 appium 版本非常旧(1.4.16)。我建议你将它升级到 1.6.3,这是目前为止非常稳定的 appium 版本

      【讨论】:

      • 我已经将 ANDROID_HOME 变量设置为安装在我的机器和 Android Studio 上的 Android SDK。见下图。
      猜你喜欢
      • 2015-04-17
      • 2014-11-17
      • 2017-03-20
      • 1970-01-01
      • 2015-07-12
      • 2015-06-04
      • 2023-03-04
      • 1970-01-01
      • 2014-06-05
      相关资源
      最近更新 更多