2017-09-15 89 views
2

我在Android Studio中使用Appium + WebDriver为Android模拟器运行简单的计算器测试。我手动启动了Appium Server和Android Emulator,然后使用TestNG.xml运行测试。Appium错误:Logcat捕获失败:产生ENOENT使用Android Studio

这里是我的示例代码的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错误。

Launching Appium server with command: C:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d) info: Appium REST http interface listener started on 127.0.0.1:4723 info: [debug] Non-default server args: {"address":"127.0.0.1","logNoColors":true,"platformName":"Android","platformVersion":"23","automationName":"Appium"} info: Console LogLevel: debug 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":[]}} info: Client User-Agent string: Apache-HttpClient/4.5.3 (Java/1.8.0_131) info: [debug] The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : version info: [debug] Didn't get app but did get Android package, will attempt to launch it on the device info: [debug] Creating new appium session 42818f6f-0677-486a-bc53-efa31009bbe7 info: Starting android appium info: [debug] Getting Java version info: Java version is: 1.8.0_131 info: [debug] Checking whether adb is present warn: The ANDROID_HOME environment variable is not set to the Android SDK root directory path. ANDROID_HOME is required for compatibility with SDK 23+. Checking along PATH for adb. info: [debug] executing cmd: where adb info: [debug] Using adb from C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe

warn: No app capability, can't parse package/activity info: [debug] Using fast reset? true info: [debug] Preparing device for session info: [debug] Not checking whether app is present since we are assuming it's already on the device info: Retrieving device info: [debug] Trying to find a connected android device info: [debug] Getting connected devices... info: [debug] executing cmd: "C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe" devices info: [debug] 1 device(s) connected info: Found device emulator-5554 info: [debug] Setting device id to emulator-5554 info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5) info: [debug] executing cmd: "C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe" -s emulator-5554 wait-for-device info: [debug] executing cmd: "C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe" -s emulator-5554 shell "echo 'ready'" info: [debug] Starting logcat capture error: Logcat capture failed: spawn "C:\Users\CParmar\AppData\Local\Android\sdk\platform-tools\adb.exe" ENOENT info: [debug] Stopping logcat capture

我已经通过在论坛上所有可用的帖子不见了,还设置有Android Studio中运行配置(Android_Home)SDK路径ANDROID_HOME变量。我仍然收到这个错误。

任何帮助?

感谢, Chandresh帕尔马

回答

0

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

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

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

而且你的appium版本很旧(1.4.16)。我建议你升级到1.6.3这是非常稳定版本的appium截至目前为止

+0

我已经设置了ANDROID_HOME变量到Android SDK安装在我的机器和Android Studio上。看到下面的图片。 –

1

您可以按照这些answers修复ANDROID_HOME env变量被设置。 与此同时,我建议安装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马克和好运气

相关问题