创建对象时,我只会得到最后一个索引

问题描述 投票:0回答:1

我需要获取用户(每个用户作为具有名称,lastNAme,标题等的对象的搜索结果),然后创建他们的列表并对其进行一些操作。我在返回对象及其名称的列表时遇到问题。我总是得到最后一条记录,即使它遍历了所有记录,也就是

((对象页面)]

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是一个setter

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

然后创建List<User>,并且正在获取相同标题的列表。有什么问题吗?

java selenium object
1个回答
0
投票

不确定整个上下文,但也许您需要更改选择器。您说过要遍历特定用户。也许对于每个用户,您应该找到带有标题/名称或其他内容的特定嵌套元素并进行设置。我想我看起来像:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.