问题标签 [aws-device-farm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
784 浏览

android - AWS Device Farm - 使用 CLI 时上传失败

我正在尝试使用 bash 脚本将 apk 上传到设备场,我已使用 create-upload 端点获取 put 请求的预签名 url,然后我使用 curl 将 apk 放置到端点。

文件上传似乎有效,但是当我使用返回的 ARN 检查状态时,状态失败,原因是“上传的应用程序无效”

但是,当我通过 GUI 在 Web 控制台上上传完全相同的文件时,应用程序很好,我可以针对它运行测试。

0 投票
2 回答
2059 浏览

java - 如何以编程方式为 AWS-Device Farm 设置 Appium --no-reset 标志

我想以编程方式设置 Appium Flag --no-reset。


当我们不想在会话之间重置应用程序状态时使用此标志(IOS:不要删除应用程序 plist 文件;Android:不要在新会话之前卸载应用程序)。它的默认值为 False,我想让它成为真的,因为我已经通过在我的本地环境中设置 --no-reset=true 来编写我的测试脚本。


为什么我想这样做

我正在使用 AWS-Device Farm(它在使用云服务的多个真实设备上运行测试用例)来测试我的 Android 应用程序,我无法控制在 AWS 上运行的 Appium 服务器,默认情况下它的 --no-reset 标志是假的,因此它在每次运行期间重置我的应用程序,这导致测试用例失败。


来自 AWS-Device Farm 的日志


注意:- 我正在使用 Appium V1.4.6、Intellij Idea (Java)、Junit Framework。请帮助并提出一些解决方案。感谢您。

0 投票
1 回答
576 浏览

java - AWS-Device farm 使用 TestNG Framework 无论选择 Appium Java Junit 进行测试

我正在使用 AWS-Device Farm 并按照指定的步骤运行我的测试包,我选择了测试配置 Appium Java Junit 但我所有的测试用例都失败了。因此,在查看与错误消息一起显示的弹出消息后,我注意到 AWS 通过将我的 junit 测试用例转换为 TestNG 来运行我的测试用例。如何克服这个问题,请提出一些解决方案。

0 投票
2 回答
284 浏览

java - 尝试使用 Java SDK 将文件放入 AWS Device Farm 时出现“上传的应用程序无效”

我正在尝试使用 AWS Java SDK 1.10.16 将 apk 上传到 AWS Device Farm

首先,我创建 Upload 对象以获取使用 PUT 请求发送 apk 所需的上传 url:

然后我执行 PUT 发送我的 apk 文件:

但上传失败:

带有“上传的应用程序无效”错误消息。

我究竟做错了什么?

谢谢。

0 投票
4 回答
532 浏览

android - AWS Device Farm 上用于 Cordova Android 应用程序的 Calabash,正确的 webview 名称?

我在尝试为 Cordova 应用程序编写 Calabash 测试时遇到了麻烦。webView 和 cordovaWebView 在本地或 AWS 上对我不起作用。


当我针对设备运行时,在本地运行的代码变体:

但是,在 AWS 上它给了我这个错误:

映射 SystemWebView css:'#login-email',查询失败,因为:java.util.concurrent.ExecutionException:java.lang.ClassCastException:sh.calaba.instrumentationbackend.actions.webview.CalabashChromeClient 无法转换为 org.apache.cordova。 engine.SystemWebChromeClient (RuntimeError) (RuntimeError) ./features/step_definitions/calabash_steps.rb:8:in/^I entered text "(.*?)" into input with id "(.*?)"$/' features/login.feature:7:in然后我在 id 为“login-email”的输入中输入了文本“test@tester”


我尝试的另一个代码变体,希望它能在 AWS Device Farm 上运行:

但这也给了我一个错误:等待元素超时:CalabashChromeClient css:'#login-email' (Calabash::Android::WaitHelpers::WaitError)


使用cordovaWebView,我收到以下错误:

等待元素超时:cordovaWebView css:'#login-email' (Calabash::Android::WaitHelpers::WaitError)


我通过在控制台中玩耍找出了在本地运行的正确 webview 名称。谈到 AWS Device Farm,我在这里有点盲目,希望你们能提供的所有提示/技巧。我也愿意切换测试框架。


0 投票
2 回答
1098 浏览

android - Appium AWS-devicefarm 的远程服务器地址无效或浏览器启动失败错误

我一直在尝试使用 AWS 设备场测试我的应用程序。

我有原生 iOS 和原生 Android 版本。

我的 TestNG 测试在本地完美运行,但在线上我在 Android 和 iOS 上都收到以下错误:

测试失败:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。构建信息:版本:'2.48.2',修订:'41bccdd10cf2c0560f637404c2d96164b67d9d67',时间:'2015-10-09 13:08:06' 系统信息:主机:'ip-10-0-221-27',ip: '10.0.221.27', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-53-generic', java.version: '1.7.0_75' 驱动程序信息:驱动程序。版本:安卓驱动

我的 JDK 是 1.8,Appium 是 1.4.8,在 Eclipse IDE 上使用最新的 Maven、TestNG 和 selenium 库。有人可以帮忙吗?

0 投票
1 回答
697 浏览

android - 从 Android Studio Gradle 构建为 AWS Device Farm 生成 UIAutomator 测试 JAR

我想使用 AWS Device Farm 运行 Android UIAutomator 测试。测试需要作为单独的 JAR 上传到 AWS。在 Android Studio (1.4) 中,UIAutomator 测试是应用项目本身的一部分,因此不会生成专用的 JAR。

如何生成仅包含 UIAutomator 测试并满足 AWS Device Farm 要求的 JAR?

0 投票
1 回答
226 浏览

android - AWS 设备场 gradle 插件不适用于 retrolambda

按照指南-设置 AWS Device Farm Gradle 插件,我设置了我的应用程序并运行了,./gradlew devicefarmUpload但遇到了很多错误。经过检查,我意识到,每次我使用 lambda 表达式(通过 Retrolambda)时都会出现错误。

手动将app.apk和上传testing.apk到 AWS Device Farm 可以正常工作。

所有 lambda 表达式的构建都失败,我在下面粘贴其中一个:

0 投票
2 回答
1880 浏览

android - AWS 设备场似乎忽略了 TestNG 注释

我已成功上传并在 AWS 设备场上运行我的测试。在本地,我使用 @Test(enabled = false, dependsOnGroups = "Login") 之类的有趣的东西来标记当时要运行的测试,以及它们应该执行的顺序。在本地,这一切都按预期工作得很好。问题发生在我将 maven 构建的 zip 上传到设备场并执行测试运行后。

查看来自设备场的日志,它不关心“启用”是否设置为 true 或 false,无论如何它都会运行。它还忽略了“group=”和“dependsOnGroups”注释。这非常重要,因为如果我没有先登录,所有其他测试都会失败。更糟糕的是,后续失败的测试将不会被跳过,因此 AWS 很乐意为此向我收取更多费用。

我尝试使用@Test(priority=blah),但它也忽略了这一点。它似乎唯一尊重的是@BeforeSuite 和@AfterSuite 之类的东西。

任何人遇到这种情况或有任何想法为什么会发生这种情况?

0 投票
1 回答
658 浏览

amazon-web-services - 通过适用于 Go 的 AWS SDK 上传到 Device Farm 的 Android 应用程序从未从 INITIALIZED 更改状态

我正在尝试使用 AWS SDK for Go 在 AWS Device Farm 中自动运行应用程序。但是任何使用 Go 版本 SDK 上传的应用程序都不会从“INITIALIZED”更改状态。如果我通过 AWS 控制台 Web UI 上传它们,那么一切都会好起来的。

上传代码示例: func uploadApp(client *devicefarm.DeviceFarm, appType, projectArn string) string { params := &devicefarm.CreateUploadInput{ Name: aws.String(*appName), ProjectArn: aws.String(projectArn), Type: aws.String(appType), } resp, err := client.CreateUpload(params) if err != nil { log.Fatal("Failed to upload an app because of: ", err.Error()) } log.Println("Upload ARN:", *resp.Upload.Arn) return *resp.Upload.Arn } 作为回应,我得到了类似的结果:
{ Upload: { Arn: "arn:aws:devicefarm:us-west-2:091463382595:upload:c632e325-266b-4bda-a74d-0acec1e2a5ae/9fbbf140-e377-4de9-b7df-dd18a21b2bca", Created: 2016-01-15 14:27:31 +0000 UTC, Name: "app-debug-unaligned.apk", Status: "INITIALIZED", Type: "ANDROID_APP", Url: "bla-bla-bla" } }
随着时间的推移,状态永远不会从“INITIALIZED”改变。正如我所提到的,从 UI 调度运行的应用程序运行良好。

如何找出原因?

========================================

解决方案:

1)CreateUpload需要在响应中使用预签名的 S3 链接上传文件后
2) 上传应通过 HTTP PUT 请求通过接收到的 URL 执行,文件内容在正文中
3) In&devicefarm.CreateUploadInput应指定ContentType参数。对于 PUT 请求,Content-Type应使用相同的标头值
4) 如果 PUT 请求将从 Go 代码发送,Content-Length则应手动设置标头