如何解决“原始错误:'命令'以代码1退出”;斯特德:'';代码:'1''

时间:2019-09-13 19:22:55

标签: java appium

我是appium自动化测试的新手,我尝试使用appium和java运行一组代码,但是尽管我已经安装了最新版本的appium和nodejs并希望运行,但该错误始终返回我下面的代码。 我尝试在Windows 10上使用appium 1.13.0运行以下代码,并且已经安装了所有必备组件,例如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”

2 个答案:

答案 0 :(得分:0)

1-首先检查鸦片是否在运行。

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

3-具备“ udid”参数才能获得所需功能

4-您应保持如下代码结构。还需要使用这三种符号:(@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();
    }

我希望这会有所帮助。

答案 1 :(得分:0)

问题出在命令本身,可能是struct ItemsView: View { var body: some View { Text("ItemsView") } } 尚未配置。

如果您尝试自己运行命令:appium@beta

您将看到输出显示:adb -P 5037 -s dd8fa21 shell pm install -g /data/local/tmp/appium_cache/728413456b86856a2003edeb524d6bd577ca6418.apk

appium espresso服务器生成的命令中缺少测试标志Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

我通过手动安装运行的apk解决了该问题:

-t