【问题标题】:How to fix 'Original error: 'Command '' exited with code 1'; Stderr: ''; Code: '1''如何修复“原始错误:“命令”以代码 1 退出”;标准错误:'';代码:'1''
【发布时间】:2019-11-20 16:47:20
【问题描述】:

我是 appium 自动化测试的新手,我尝试使用 appium 和 java 运行一组代码,但这个错误总是返回给我,尽管我已经安装了 appium 和 nodejs 最新版本并且我想运行这下面的代码。 我尝试在带有 appium 1.13.0 的 Windows 10 上运行以下代码,并且我已经安装了所有先决条件,例如 node js 和 appium 桌面客户端

package andriod;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;

public class StartApplication {

    private static AndroidDriver driver;

    public static void main(String[] args) throws MalformedURLException, InterruptedException {

        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "/Apps/");
        File app = new File(appDir, "in.amazon.mShop.android.shopping_2019-09-11.apk");

        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("autoGrantPermissions", true);
        caps.setCapability("noReset", true);
        caps.setCapability(CapabilityType.BROWSER_NAME, "");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Redmi");   
        caps.setCapability(CapabilityType.PLATFORM_NAME, "ANDROID");
        caps.setCapability(CapabilityType.VERSION, "9.0");
        caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,"60");
        caps.setCapability("app", app.getAbsolutePath());
        caps.setCapability("appPackage", "in.amazon.mShop.android.shopping");
        caps.setCapability("appActivity", "com.amazon.mShop.home.HomeActivity");

        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);
        Thread.sleep(10000);
        driver.quit();
     }

} 

我希望代码会成功运行,但返回给我的错误消息与以下相同

原始错误:'命令'C:\Users\myusername\AppData\Local\Android\sdk\platform-tools\adb.exe -P 5037 -s dd8fa21 shell pm install -g /data/local/tmp/appium_cache /728413456b86856a2003edeb524d6bd577ca6418.apk' 以代码 1' 退出;标准错误:'';代码:'1'

【问题讨论】:

  • BTW 您的第一行拼写错误
  • 你是怎么运行这个的?
  • 我通过 Eclipse 运行它。我已经运行了主类,实际上 appium 服务器正在运行
  • 我用的是redmi note 7 android version 9.0
  • 您的包裹和活动参数有问题。我也想知道你的应用文件名是否准确。

标签: java appium


【解决方案1】:

问题在于命令本身,可能是appium@beta 尚未配置此功能。

如果您尝试自己运行命令:adb -P 5037 -s dd8fa21 shell pm install -g /data/local/tmp/appium_cache/728413456b86856a2003edeb524d6bd577ca6418.apk

你会看到输出:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

appium espresso 服务器生成的命令中缺少测试标志-t

我通过手动安装apk运行解决了:

adb -P 5037 -s dd8fa21 shell pm install -t -g /data/local/tmp/appium_cache/728413456b86856a2003edeb524d6bd577ca6418.apk

【讨论】:

    【解决方案2】:

    1-首先检查appium是否正在运行。

    2- 如果是,您应该知道有时 Node.js 无法与 127.0.0.1:4723 对话,因此请改用 0.0.0.0:4723。请记住在代码 (DesiredCapabilities) 和 appium 设置中更改此设置。

    3- 所需功能需要“udid”参数

    4- 你应该保持如下代码结构。还需要使用这 3 个符号: (@BeforeMethod , @Test, @AfterMethod)

    类似这样的:

     import <...>
        .
        .
    
        public class sample {  //this is the main class. You shouldn't define it as static or void so you must not have main methode
        //define variables you will be use during the test        
    public AndroidDriver<MobileElement> driver;
            public WebDriverWait wait;
            public Dimension size;
            public String destDir;
            public DateFormat dateFormat;
            .
            .
            .
        //define the methodes you will be use during the test 
        public (swipe) {
        ... };
        public (takeScreenShot) {
        ...};
    
    @BeforeMethod
    
        public void setup () throws MalformedURLException {
            DesiredCapabilities caps = new DesiredCapabilities();
            caps.setCapability("deviceName", "Galaxy S7 API 26");
            caps.setCapability("udid", "ce0217124184c72505"); //DeviceId from "adb devices" command
            caps.setCapability("platformName", "Android");
            caps.setCapability("platformVersion", "8.0");
            caps.setCapability("skipUnlock","true");
            caps.setCapability("appPackage", "app_packageName"); // Your app packageName
            caps.setCapability("appActivity","app_first_activity"); // The first activity of app. You can use "Apk Info2" application to find this
            caps.setCapability("noReset","false");
            driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"),caps);
            wait = new WebDriverWait(driver, 10);
    }
    
    @Test
         public void test () throws Exception {
    
        //Test commands
        }
    
    @AfterMethod
    
        public void teardown(){
            driver.quit();
        }
    

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的回复,不过是我手机红米的问题,我换了设备问题解决了
    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多