当前位置: 首页 > 知识库问答 >
问题:

代码未按预期工作。在我的Selenium Webdriver Java代码中使用ArrayList和for循环

孙熠彤
2023-03-14

所以我最近开始了使用Java开发Selenium Webdriver的工作。下面是代码:

List<LineDashboardDetails> LineDashboardDetailList = new ArrayList<LineDashboardDetails>();

        LineDashboardDetails objLineDetail = new LineDashboardDetails();
        
        for (int i = 0; i < lineUITextList.size(); i++) {
            objLineDetail.lineName=lineUITextList.get(i);
            objLineDetail.machineNames = machineUITextList.get(i).toString();
            LineDashboardDetailList.add(objLineDetail);
        }

        System.out.println(LineDashboardDetailList);

共有1个答案

杨骏
2023-03-14

我不完全确定你想要达到什么目的。就我个人而言,我将使用java.util.map将LineuitExtList的每个值与MachineuitExtList的值列表关联起来。
但是,为了帮助您实现目标,首先,我将设计LineDashBoardDetails类,以便维护LineuitExtList的单个值以及MachineuitExtList的列表,这样您就可以使用特定的方法将它们组合起来。这在封装、响应分配等方面有很多优点。此外,您还可以将其用于其他目的。
通过利用Java流和内置函数接口,可以轻松实现组合值的函数。
以下是LinedashboardDetails类的代码:

import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;

public class LineDashboardDetails {
    private String lineName;
    private List<String> machineNames;


    public String getLineName() {
        return lineName;
    }

    public void setLineName(String lineName) {
        this.lineName = lineName;
    }

    public List<String> getMachineNames() {
        return new ArrayList<>(machineNames);
    }

    public void setMachineNames(List<String> machineNames) {
        this.machineNames = new ArrayList<>(machineNames);
    }

    public List<String> getCombinedList() {
        return  machineNames.stream()
                            .map(s -> lineName + "," + s)
                            .collect(Collectors.toList());
    }
}

这里是您尝试实现的代码,它使用上面的类并组合两个列表,最后按您的期望打印出值列表。大家可以看到,我在主法中准备了两个简单的列表,但是大家其实可以联系自己的需求来概括一下:

import java.util.List;
import java.util.ArrayList;


public class SeleniumWebdriverListTest {

    public List<LineDashboardDetails> combineUITextListWithMachineUIText(List<String> lineUITextList,
                                                                         List<String> machineUITextList) {

        List<LineDashboardDetails> lineDashboardDetailList = new ArrayList<>();

        for (String lineUIText : lineUITextList) {
            LineDashboardDetails objLineDetail = new LineDashboardDetails();
            objLineDetail.setLineName(lineUIText);
            objLineDetail.setMachineNames(machineUITextList);
            lineDashboardDetailList.add(objLineDetail);
        }

        return lineDashboardDetailList;
    }

    
    public static void main(String[] args) {
        List<String> lineUITextList = new ArrayList<>();
        lineUITextList.add("Noun");

        List<String> machineUITextList = new ArrayList<>();
        machineUITextList.add("Pen");
        machineUITextList.add("Box");
        machineUITextList.add("Note");
        machineUITextList.add("Scale");

        List<LineDashboardDetails> lineDashboardDetailList =
                new SeleniumWebdriverListTest().combineUITextListWithMachineUIText(
                        lineUITextList, machineUITextList);

        lineDashboardDetailList.stream()
                               .map(s -> s.getCombinedList())
                               .forEach(System.out::println);
    }
}

我也可以使用Java流和特定的lamba表达式来实现CombineUitExtListWithMachineUitExt方法,但我保留了原始版本,以让您了解我关于代码的实现思想。以下是我得到的输出:

[Noun,Pen, Noun,Box, Noun,Note, Noun,Scale]

如果有任何澄清,请随时询问。

 类似资料:
  • 我在本地安装了java11,我正在使用maven编译器插件将其源/目标设置为1.8,在我的代码中我正在使用

  • 我正在尝试根据“ExpectedDate”和“ObservedDate”填充“FinalDate”。 规则是:对于每个组,如果观察日期大于前一个预期日期且小于下一个预期日期,则最终日期等于观察日期,否则最终日期等于预期日期。 如何修改下面的代码以确保: 最终日期按组填写 迭代次数不跳过任何行 例如,在下面的输出中: 当i=90时,代码在字母I中查找之前的预期日期 我们希望它只在字母J中查找Expe

  • 我对AngularJS不熟悉,只是在玩弄这些东西。这是我的HTML: 以下是控制器代码: 我已经使用属性设置了输入文本字段的值。因此,我期望控制器函数读取这些值并在页面加载时返回全名。但我得到的是: 输入文本框为空。为什么会这样呢?

  • 我有一个应用程序实体,其中包含一些参数,如CustomerName、Address和CardNumber。在用Jackson将其序列化为JSON时,我希望卡号被屏蔽。例如,如果CardNumber为1234567890134,我希望JSON的值为CardNumber:1234*******1234。所以我在Card Number属性上添加了@JsonSerialize注释,并使其使用我的自定义序列

  • 下面的模式代码没有按预期工作。 谁能帮我?

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它