Попытка получить текст внутри тега <ul>, но он возвращает только первый элемент Selenium - PullRequest
0 голосов
/ 13 января 2019

это структура неупорядоченного списка

структура неупорядоченного списка

Я хочу получить значения "var" и "time" в две строки и сохранить их в ArrayList

List<String[]> finalResult = new ArrayList<>();

Это то, что я пытался

 List<WebElement> typeElements =driver.findElements(By.xpath("//*[@id=\"container\"]/section[2]/div/div[2]/div[2]/ul/li"));
        for(int i=0;i<typeElements.size();i++){
            WebElement typeSingle = typeElements.get(i);
            String stName = typeSingle.findElement(By.xpath("//div/a/var")).getText();
            String stTime = typeSingle.findElement(By.xpath("//div/a/time")).getText();
            String singleType[] =stName,stTime};
            finalResult.add(singleType);

        }

я получаю всего 13 предметов в

finalResult

переменная. но все предметы одинаковы

{"title1", "00:23"}

{ "title1", "00:23"}

{ "title1", "00:23"} ....

я хочу, чтобы они были такими

{ "title1", "00:23"}

{ "title2", "00:31"} .....

что я делаю не так?

*** Редактировать *

На каждом шаге внутри цикла for typeSingle ссылается на разные идентификаторы, но stName , stTime переменные одинаковы

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Чтобы получить дочерний элемент с xpath, вам нужно использовать ./:

String stName = typeSingle.findElement(By.xpath("./div/a/var")).getText();
String stTime = typeSingle.findElement(By.xpath("./div/a/time")).getText();

Или используйте селектор CSS:

String stName = typeSingle.findElement(By.cssSelector("var")).getText();
String stTime = typeSingle.findElement(By.cssSelector("time")).getText();
0 голосов
/ 13 января 2019

Изменение этого

 String stName = typeSingle.findElement(By.xpath("//div/a/var")).getText();
 String stTime = typeSingle.findElement(By.xpath("//div/a/time")).getText();

чтобы решить эту проблему

String stName = typeSingle.findElement(By.xpath("div/a/var")).getText();
String stTime = typeSingle.findElement(By.xpath("div/a/time")).getText();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...