【发布时间】:2018-07-12 15:12:40
【问题描述】:
我正在使用 Data Provider 将浏览器组合从 Jenkins 传递给 json 对象。请帮助该方法有什么问题。
我的项目在 Java 上,使用 TestNg 和 Maven。
package com.***.tests;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.json.JsonException;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
public class RemoteSauceOnDemandBrowser {
protected WebDriver driver;
public static final String SAUCE_ACCESS_KEY =
System.getenv("SAUCE_ACCESS_KEY");
public static final String SAUCE_USERNAME = System.getenv("SAUCE_USERNAME");
@DataProvider(name = "hardCodedBrowsers", parallel = true)
public static Object[][] sauceBrowserDataProvider(Method testMethod) throws
JsonException {
String browsersJSONArrayString =
System.getenv("SAUCE_ONDEMAND_BROWSERS");
JsonArray browsersJSONArrayObj = new JsonArray(browsersJSONArrayString);
//browsersJSONArrayString on new JsonArray(browsersJSONArrayString); - 在 JsonArray 中带下划线的 JsonArray (int) 不能应用于 java.lang.String
Object[][] browserObjArray = new Object[browsersJSONArrayObj.length()]
[3];
//长度加下划线,无法解析方法长度
for (int i=0; i<browsersJSONArrayObj.length(); i++)
//长度加下划线,无法解析方法长度
{
JsonObject browserObj =
(JsonObject)browsersJSONArrayObj.getAsJsonObject(i);
// i - 带下划线的JsonElement中getAsJsonObject不能应用于(int)
browserObjArray[i] = new Object[]{browserObj.get("browser"), browserObj.get("browser-version"), browserObj.get("os")};
}
return browserObjArray;
}
private void createDriver(String browser, String version, String os, String methodName) throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", browser);
if (version != null) {
capabilities.setCapability(CapabilityType.VERSION, version);
}
capabilities.setCapability("platform", os);
String jobName = methodName + '_' + os + '_' + browser + '_' + version;
capabilities.setCapability("name", jobName);
driver = (new RemoteWebDriver(new URL("http://" + SAUCE_USERNAME + ":" + SAUCE_ACCESS_KEY + "@ondemand.saucelabs.com:80/wd/hub"), capabilities));
}
@AfterMethod
public void tearDown() throws Exception {
driver.quit();
}
}
使用新的依赖项更新了 pom.xml:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
<scope>test</scope>
</dependency>
【问题讨论】: