0

我正在尝试使用 maven android 插件创建我的 android 应用程序,以便在带有 Appium 的 Saucelabs 上自动运行我的集成测试。到目前为止,我尝试过的所有事情都只给了我错误“无法下载移动应用程序:c:\workspace\android\android-it..\android-app\target\android-app.apk”

我在我的集​​成测试 pom 文件中使用了以下配置的 sauceconnect:

<plugins>
         <plugin>
        <groupId>com.saucelabs.maven.plugin</groupId>
        <artifactId>sauce-connect-plugin</artifactId>
        <version>1.0.15</version>
        <configuration>
            <sauceUsername>MY USERNAME</sauceUsername>
            <sauceAccessKey>MY KEY</sauceAccessKey>
        </configuration>
        <executions>
            <!-- Start Sauce Connect prior to running the integration tests -->
            <execution>
                <id>start-sauceconnct</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start-sauceconnect</goal>
                </goals>
            </execution>
            <!-- Stop the Sauce Connect process after the integration tests have finished -->
            <execution>
                <id>stop-sauceconnect</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop-sauceconnect</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

我的 appium 测试配置是在我的 setup 方法中完成的,如下所示:

@Before
public void setUp() throws Exception {
    File classpathRoot = new File(System.getProperty("user.dir"));
    File app = new File(classpathRoot, "../android-app/target/android-app.apk");
    logger.info("PATH");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("appium-version", "1.0");
    capabilities.setCapability("apk", "sauce-storage:my_app.apk");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "4.2");
    capabilities.setCapability("deviceName", "Android Emulator");
    capabilities.setCapability("deviceType", "phone");
    capabilities.setCapability("device","Android");
    capabilities.setCapability("app", app.getAbsolutePath());
    capabilities.setCapability("app-package", "com.android-app");
    capabilities.setCapability("app-activity", ".MainActivity");
    capabilities.setCapability("takesScreenshot", true);
    driver = new RemoteWebDriver(
            new URL("http://user:key@ondemand.saucelabs.com:80/wd/hub"),
            capabilities);
//        driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

根据我在 Saucelabs 和 Appium 上阅读的所有内容,这应该允许我的 apk 在我运行 maven 构建时正确下载并运行,但是,如上所述,情况似乎并非如此。如果有人可以为我提供我所缺少的指针,我将不胜感激。

4

1 回答 1

0

您正在尝试使用本地应用程序路径启动 Sauce 会话;由于 Sauce 无法访问该路径,因此无法从中下载 APK。

我假设您正在手动上传您的应用程序,或者您的 Maven 配置在每次构建之前都会这样做。(额外提示:确保您传递了overwrite参数,并确保它是真的!)

如果您将“app”功能设置为您用于“apk”功能的值,即酱汁存储参考,您的测试应该能够下载您的应用程序。另一方面,我不确定您的测试使用的“apk”功能来自哪里;在 Sauce Labs/Appium 文档中的什么地方引用了它?

您也不再需要 Appium 1.0 的app-packageorapp-activity功能。

试试这些功能:

capabilities.setCapability("appium-version", "1.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "4.2");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("deviceType", "phone");
capabilities.setCapability("app", "sauce-storage:my_app.apk");
capabilities.setCapability("takesScreenshot", true);
于 2014-06-02T03:52:22.173 回答