【问题标题】:Multiple underlines at @DataProvider with json strings (Selenium Java)带有 json 字符串的 @DataProvider 上的多个下划线(Selenium Java)
【发布时间】: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>

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

【问题讨论】:

    标签: java arrays json selenium


    【解决方案1】:

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

    【讨论】:

    • 通过使用大写 JSON,它会为每个 JSON 字符串添加下划线。将依赖添加到 pom.xml 中,但问题仍然存在。
    • 你的例子是我下载的 prntscr.com/k5njgy 我没有任何下划线。尝试添加导入:import org.json.JSONArray;导入 org.json.JSONException;导入 org.json.JSONObject;
    • 它没有帮助。似乎从未使用过 json 依赖项。想知道是否应该将json包添加到路径中
    • IDEA 可能存在一些问题阅读解决方案在这里stackoverflow.com/questions/9980869/…
    猜你喜欢
    • 2014-11-02
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2019-04-25
    • 2021-02-11
    • 2015-04-17
    • 2020-03-31
    • 2013-12-30
    相关资源
    最近更新 更多