我正在使用数据提供程序将浏览器组合从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在新的JsonArray(browsersJSONArrayString); -JsonArray中带有JsonArray(int)的下划线不能应用于java.lang.String
Object[][] browserObjArray = new Object[browsersJSONArrayObj.length()]
[3];
// length带下划线,无法解析方法长度
for (int i=0; i<browsersJSONArrayObj.length(); i++)
// length带下划线,无法解析方法长度
{
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>
答案 0 :(得分:0)
与示例中使用的类不同,应使用 JSONArray 代替 JsonArray ,使用JSONObject代替JsonObject-https://prnt.sc/k5hh4f