чтение вар в тексте / JavaScript на селен Java - PullRequest
0 голосов
/ 06 мая 2018

У меня есть код в HTML, как показано ниже:

<body>
     <script type="text/javascript">
            var result = {"products": [{
                                    "name": "SAMSUNG GALAXY J7 CORE GARANSI RESMI 1 TAHUN",
                                    "code": "6701800730440"
                                    },
                                    {
                                    "name": "IPHONE 6S 32GB GREY GARANSI INTERNASIONAL 1 TAHUN",
                                    "code": "3764942373363"
                                    }
                          ]};
     </script>
</body>

Я пытаюсь вернуть значение результата var, используя селен

System.out.println(((JavascriptExecutor) webDriver).executeScript("return result;"));

чтобы извлечь значение из результата var, но результат равен нулю Как я могу получить данные из результата Var и как я беру продукт данных [0].

1 Ответ

0 голосов
/ 06 мая 2018

Класс данных

public class NameCodeClass {

    public String name, code;

    public NameCodeClass(String name, String code) {
        this.name = name;
        this.code = code;
    }
}

index.php

<body>
     <script type="text/javascript">
            var result = {"products": [{
                                    "name": "SAMSUNG GALAXY J7 CORE GARANSI RESMI 1 TAHUN",
                                    "code": "6701800730440"
                                    },
                                    {
                                    "name": "IPHONE 6S 32GB GREY GARANSI INTERNASIONAL 1 TAHUN",
                                    "code": "3764942373363"
                                    }
                          ]};
     </script>
</body>

Проверка функции с использованием Selenimu

@Test
    public void test() {

        WebDriverWait wait = new WebDriverWait(driver, 30);
        driver.get("http://localhost/stackoverflow/index.php");

        JavascriptExecutor js = (JavascriptExecutor) driver;
        Object productObject = js.executeScript("return result;");

        Gson g = new Gson();
        //Object to String convertion
        String productJsonString = g.toJson(productObject);

        JsonParser jsonParser = new JsonParser();
        //String to JsonObject Convertion
        JsonObject objectFromString = jsonParser.parse(productJsonString).getAsJsonObject();
        JsonArray jSONArray = objectFromString.getAsJsonArray("products");

        NameCodeClass product[] = new NameCodeClass[jSONArray.size()];//declaration and instantiation

        for (int i = 0; i < jSONArray.size(); i++) {

            objectFromString = jsonParser.parse(jSONArray.get(i).toString()).getAsJsonObject();

            product[i] = new NameCodeClass(objectFromString.get("name").toString(), objectFromString.get("code").toString());

            // System.out.println("name: " + product[i].name + "  code:" + product[i].code);
        }

        System.out.println("name: " + product[0].name + "  code:" + product[0].code);

    }

Теперь вы можете называть продукт [0] .name way

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...