【问题标题】:How to access RestFul Apis through Appium-TestNG framework in AWS-Device Farm?如何通过 AWS-Device Farm 中的 Appium-TestNG 框架访问 RestFul APIs?
【发布时间】:2018-10-28 12:19:13
【问题描述】:

我们使用 Appium-TestNG 创建了我们的自动化框架,我们在其中通过 RestFul API 从外部访问我们的后端服务器。后端服务器也基于 AWS,并将设备场 IP 列入白名单。当我们在本地执行测试时它工作正常,但是当我们在 AWS Device Farm 上执行它时,它在尝试通过我们的 api 访问后端服务器时给出“套接字异常”。

谁能给我们一个如何通过 Device Farm 访问外部 Rest APIS 的解决方案?

【问题讨论】:

  • 您是从测试中进行这些调用还是来自设备的请求?您还可以提供套接字异常的堆栈跟踪吗?
  • 我们正在通过测试进行此调用。以下是堆栈跟踪:“测试”-@BeforeMethod Android.Regression.EditPersonalInformation.setup() wawa_api.commons.ApiException: java.net.SocketTimeoutException: connect timed out at wawa_api.commons.ApiClient.execute(ApiClient.java:840)在 wawa_api.mobagteway.AuthenticationControllerV4Api.getClientCredentialsUsingPOST1WithHttpInfo(AuthenticationControllerV4Api.java:134) 在 wawa_api.mobagteway.AuthenticationControllerV4Api.getClientCredentialsUsingPOST1(AuthenticationControllerV4Api.java:118)

标签: appium aws-device-farm


【解决方案1】:

FAQ of Device Farm 中的 IP 范围指向设备,但不指向设备主机。设备主机可能有多种 IP,但理论上有两种方法(到目前为止我已经找到)来解决这个问题:

  1. 使用 Device Farm 的专用产品。

如果您有权访问 Device Farm 的专用产品,则可以将 VPC integration 用于设备和设备主机。因此,使用此方法不需要任何白名单。

  1. 使用 API Gateway 的 private VPC integration 并从测试中调用此 API

在使用公开发行(meteredunmetered 选项)时,我们应该能够利用 API Gateway 的 VPC 集成。在与 REST API 相同的 VPC 中使用私有 NLB,我们可以创建 VPC 链接。我认为最终的架构应该是这样的:

然后我们可以使用API keycustom authorizers 保护API。那么我们就可以调用这个从设备主机链接到私有 REST API 的 API。

注意:这可能不是最佳解决方法,具体取决于用例,因为设备主机将有权访问 API 密钥。

另外(我知道你没有问这个,但无论如何都想链接到它),到目前为止我发现开发 REST API 调用的最简单方法是使用 Postman 成功调用 REST API。然后使用code snippet 功能以邮递员的支持语言进行相同的调用。

希望有帮助

-詹姆斯

【讨论】:

  • 谢谢詹姆斯。我会调查并回复你。
  • 嗨詹姆斯,您能否详细说明以下选项:“另外(我知道您没有问这个,但无论如何都想链接到它),这是迄今为止我发现的最简单的方法开发 REST API 调用就是使用 Postman 来成功调用 REST API。然后使用代码 sn-p 功能在邮递员的支持语言中进行相同的调用。”谢谢高塔姆
  • 我的意思是您可以使用该功能为 API 请求编写代码。很多人不知道,所以我想分享一下
猜你喜欢
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多