Roku WebDriver 设置是否适用于我的 Java 框架
Will Roku WebDriver setup work with my Java framework
我知道 Roku Webdriver 存储库附带 python 和 Postman 示例脚本,但我想知道我是否可以使用我的 Java 脚本(而不是 javascript)来连接并自动化.如果是这样,有没有人有任何示例如何在 Java 中设置驱动程序?
你可以试一试Rokuality。
自述文件:它是第一个为 Roku WebDriver API 提供支持的项目之一。
如果不是up-to-date,你可以拿一个核心作为你测试框架的基础
我的建议是下载 Roku 提供的解决方案,阅读 API 文档,使用他们针对 Python、JavaScript and/or Postman 的示例解决方案熟悉这项技术,然后为 Java.
编写自己的解决方案
Roku WebDriver 解决方案的核心是一个 HTTP 服务器,它发送 ECP 命令(主要是远程控制)并且能够查询 XML 被测 Roku 频道的来源以响应 JSON 有线协议格式。使用文档和示例库,为您的 Java 解决方案编写 class 将是一项直接的任务,它可以向 WebDriver HTTP 服务器发送 GET 和 POST 请求。您可以使用 Roku 提供的 Go 语言解决方案为您要支持的平台(Mac/Linux/Windows 等)上的 HTTP 服务器编译二进制文件,然后将二进制文件包含在您的解决方案中。您还需要编写一个 class 来启动和管理 HTTP 服务器的状态,并可能进一步扩展解决方案以执行其他操作,例如解析来自服务器的 JSON 响应的响应,捕获来自设备的日志和保存屏幕截图。
虽然我没有 Java 使用 Roku WebDriver,但我在 Roku WebDriver 发布后不久就开始使用它。我们想使用 JavaScript,当时 Roku 还没有发布他们的 JavaScript 库,所以我为我正在做的项目写了一个。 Roku 的 API 文档和机器人框架库可供参考,这是一项非常简单的任务。我认为您没有理由不能在 Java、C# 或类似语言中做同样的事情。
注意:另一位用户指出了 Rokuality 解决方案。虽然回顾他们的实施以从中学习当然不会有什么坏处,但它似乎有很多您可能不需要的复杂性。许多解决方案似乎旨在与 Rokuality 云服务产品进行交互,此时他们的域不会去任何地方,所以我不确定他们是否还在运行 运行.
我明白了。如果有人有兴趣在 Java 中实现自动化,此代码将作为起点。确保首先连接到 Go 服务器。步骤在 https://developer.roku.com/en-ca/docs/developer-program/dev-tools/automated-channel-testing/automated-testing-overview.md 上。不要忘记用
更新 bash 或 zshrc
export GOPATH=/Users/$USER/eclipse-workspace/automated-channel-testing-master
一旦服务器 运行ning,运行 代码。确保添加自己的 IP。那位于 Roku 设备的设置中。还要添加一个关闭方法,这样您就不会收到“会话已经 运行ning”的任何错误。如果确实如此,只需重置服务器即可。
同样,这只是一个起点 - 使用 https://developer.roku.com/en-ca/docs/developer-program/dev-tools/automated-channel-testing/web-driver.md 中的 API 真正开始自动化。
String ip ;
JSONObject json;
String cookie;
public RokuDriver(String IP) {
this.ip = IP;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
RequestBody body = RequestBody.create("{\n\t\"ip\": \""+ip+"\"\n}", MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("http://localhost:9000/v1/session")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
JSONObject jsonBody = new
JSONObject(response.body().string());
cookie = jsonBody.getString("sessionId");
System.out.println(jsonBody.toString(4));
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
close();
}
}
public void down() {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\n\t\"button\": \"down\"\n}", MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("http://localhost:9000/v1/session/"+cookie+"/press")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
POM:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-urlconnection</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20200518</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
我知道 Roku Webdriver 存储库附带 python 和 Postman 示例脚本,但我想知道我是否可以使用我的 Java 脚本(而不是 javascript)来连接并自动化.如果是这样,有没有人有任何示例如何在 Java 中设置驱动程序?
你可以试一试Rokuality。
自述文件:它是第一个为 Roku WebDriver API 提供支持的项目之一。
如果不是up-to-date,你可以拿一个核心作为你测试框架的基础
我的建议是下载 Roku 提供的解决方案,阅读 API 文档,使用他们针对 Python、JavaScript and/or Postman 的示例解决方案熟悉这项技术,然后为 Java.
编写自己的解决方案Roku WebDriver 解决方案的核心是一个 HTTP 服务器,它发送 ECP 命令(主要是远程控制)并且能够查询 XML 被测 Roku 频道的来源以响应 JSON 有线协议格式。使用文档和示例库,为您的 Java 解决方案编写 class 将是一项直接的任务,它可以向 WebDriver HTTP 服务器发送 GET 和 POST 请求。您可以使用 Roku 提供的 Go 语言解决方案为您要支持的平台(Mac/Linux/Windows 等)上的 HTTP 服务器编译二进制文件,然后将二进制文件包含在您的解决方案中。您还需要编写一个 class 来启动和管理 HTTP 服务器的状态,并可能进一步扩展解决方案以执行其他操作,例如解析来自服务器的 JSON 响应的响应,捕获来自设备的日志和保存屏幕截图。
虽然我没有 Java 使用 Roku WebDriver,但我在 Roku WebDriver 发布后不久就开始使用它。我们想使用 JavaScript,当时 Roku 还没有发布他们的 JavaScript 库,所以我为我正在做的项目写了一个。 Roku 的 API 文档和机器人框架库可供参考,这是一项非常简单的任务。我认为您没有理由不能在 Java、C# 或类似语言中做同样的事情。
注意:另一位用户指出了 Rokuality 解决方案。虽然回顾他们的实施以从中学习当然不会有什么坏处,但它似乎有很多您可能不需要的复杂性。许多解决方案似乎旨在与 Rokuality 云服务产品进行交互,此时他们的域不会去任何地方,所以我不确定他们是否还在运行 运行.
我明白了。如果有人有兴趣在 Java 中实现自动化,此代码将作为起点。确保首先连接到 Go 服务器。步骤在 https://developer.roku.com/en-ca/docs/developer-program/dev-tools/automated-channel-testing/automated-testing-overview.md 上。不要忘记用
更新 bash 或 zshrcexport GOPATH=/Users/$USER/eclipse-workspace/automated-channel-testing-master
一旦服务器 运行ning,运行 代码。确保添加自己的 IP。那位于 Roku 设备的设置中。还要添加一个关闭方法,这样您就不会收到“会话已经 运行ning”的任何错误。如果确实如此,只需重置服务器即可。
同样,这只是一个起点 - 使用 https://developer.roku.com/en-ca/docs/developer-program/dev-tools/automated-channel-testing/web-driver.md 中的 API 真正开始自动化。
String ip ;
JSONObject json;
String cookie;
public RokuDriver(String IP) {
this.ip = IP;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
RequestBody body = RequestBody.create("{\n\t\"ip\": \""+ip+"\"\n}", MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("http://localhost:9000/v1/session")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
JSONObject jsonBody = new
JSONObject(response.body().string());
cookie = jsonBody.getString("sessionId");
System.out.println(jsonBody.toString(4));
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
close();
}
}
public void down() {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\n\t\"button\": \"down\"\n}", MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("http://localhost:9000/v1/session/"+cookie+"/press")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
POM:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-urlconnection</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20200518</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>