@DataProvider上带有json字符串的多个下划线(Selenium Java)

时间:2018-07-11 17:49:14

标签: java arrays json selenium

我正在使用数据提供程序将浏览器组合从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>

我指的是这个示例:https://github.com/KevinMarkVI/Java-TestNG-Jenkins-Selenium/blob/master/src/test/java/com/yourcompany/SampleSauceTest.java

1 个答案:

答案 0 :(得分:0)

与示例中使用的类不同,应使用 JSONArray 代替 JsonArray ,使用JSONObject代替JsonObject-https://prnt.sc/k5hh4f