При создании объекта я получаю только последний индекс - PullRequest
0 голосов
/ 25 апреля 2020

Мне нужно получить результаты поиска пользователей (у каждого пользователя есть объект с именем, lastNAme, title и т. Д. c), а затем создать их список и выполнить с ними некоторые действия. У меня возникла проблема с возвратом объекта и списка этого объекта с его именем. Я всегда получаю последнюю запись, даже несмотря на то, что она проходит через все из них, то есть

(страница объекта)

public User (WebElement elem) {
List<WebElement> titles = elem.findElements(By.xpath("//div[@id='userResults']//div[@class='title']"));
        for (WebElement title: titles) {
            setTitle(title.getText());
            System.out.println(title.getText()); // everytime during iteration I am getting different title, which is good
        }
System.out.println(titles.get(0).getText()); // ...but then I get the last index in the search result
}

setTitle является установщиком

public void setTitle(String title) {
        this.title = title;
    }

затем я создаю List<User> и получаю список с таким же названием. Что может быть не так?

1 Ответ

0 голосов
/ 25 апреля 2020

Не уверен насчет всего контекста, но, возможно, вам нужно изменить селектор. Вы сказали, что перебираете определенных c пользователей. Возможно, для каждого пользователя вы должны найти его указанный c вложенный элемент с названием / именем или что-то еще и установить его. Я думаю, я мог бы выглядеть так:

public User (WebElement elem) {
WebElement title = elem.findElement(By.xpath("//div[@class='title']")); // find nested element for specific user
           setTitle(title.getText());
WebElement name = elem.findElement(By.xpath("//div[@class='name']"));
           setName(name.getText());
// and so on...
}

Или, может быть:

public List<User> (WebElement elem) {
List<User> users = new ArrayList<>();
User user = new User();

List<WebElements> allElements = elem.findElements(By.xpath("//div[@class='userResults']")); 

for (WebElement single: allElements ) {
            WebElement title = single.findElement(By.xpath("//div[@class='title']")); 
                user.setTitle(title.getText());
            WebElement name = single.findElement(By.xpath("//div[@class='name']"));
               user.setName(name.getText());
            users.add(user);
        }

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