gpt4 book ai didi

java - 如何同时比较两个列表并执行条件操作?

转载 作者:行者123 更新时间:2023-12-02 01:21:30 25 4
gpt4 key购买 nike

我正在将网页复选框状态与 Excel 文件中设置的参数进行比较。然而,它一直在无休止地打开和关闭复选框。

我尝试了以下代码。

我从 Excel 获取数据进行比较的方式。

    HSSFSheet dispcolsheet = workbook2.getSheet("Display Columns");
DataFormatter df = new DataFormatter();
Iterator<Row> colRowItr = dispcolsheet.rowIterator();
List<String> colstatuslist = new ArrayList<String>();
while (colRowItr.hasNext()){
Row row = colRowItr.next();
Cell colname = row.getCell(0);
if (colname.getStringCellValue().startsWith("chkColumns_")) {
Cell colstatuscell = row.getCell(1);
String colstatus = df.formatCellValue(colstatuscell);
colstatuslist.add(colstatus);
}
}

试验1

    List<WebElement> checkboxes = driver.findElements(By.cssSelector("input[id^=chkColumns_]"));
for (int i = 0; i < checkboxes.size() ; i++) {
for (int j = 0; j < colstatuslist.size() ; j++)
if(checkboxes.get(i).getAttribute("checked type") !=null){
if(colstatuslist.get(j).equals("FALSE")){
checkboxes.get(i).click();
}
}
else {
if(colstatuslist.get(j).equals("TRUE")){
checkboxes.get(i).click();
}
}
}

试验2

    List<WebElement> checkboxes = driver.findElements(By.cssSelector("input[id^=chkColumns_]"));
for (int i = 0; i < checkboxes.size() ; i++) {
if(checkboxes.get(i).getAttribute("checked type") !=null){
for (int j = i; j < colstatuslist.size() ; j++) {
if (colstatuslist.get(j).equals("FALSE")){
checkboxes.get(i).click();
}
}
}
else {
for (int j = i; j < colstatuslist.size() ; j++) {
if (colstatuslist.get(j).equals("TRUE")){
checkboxes.get(i).click();
}
}
}
}

这两个代码只会打开和关闭第一个复选框。

试验3

    List<WebElement> checkboxes = driver.findElements(By.cssSelector("input[id^=chkColumns_]"));
Iterator<String> collistitr = colstatuslist.iterator();
Iterator<WebElement> chkboxitr = checkboxes.iterator();
while (collistitr.hasNext() && chkboxitr.hasNext()) {
for (int i = 0; i < checkboxes.size() ; i++) {
if(checkboxes.get(i).getAttribute("checked type") !=null){
if(colstatuslist.get(i).equals("No")){
checkboxes.get(i).click();
}
}
else {
if(colstatuslist.get(i).equals("Yes")){
checkboxes.get(i).click();
}
}
}
}

此代码将无休止地一一点击所有复选框。

有关excel部分的上下文,您可以访问我的另一个帖子:Why I cannot get values from excel into a list using my codes?我希望实现当选中 checkbox1 并且 excel 值为“False”时,它应单击 checkbox1 取消选中,反之亦然以匹配 excel 参数。喜欢:

     On web|check status|On xls |xls parameter
box0 get(i) checked get(j) False ->click box0 on web to uncheck, next
box1 get(i+1) not check get(j+1) True ->click box1 on web to check, next
box2 get(i+2) checked get(j+2) True ->do nothing, compare next
box3 get(i+3) not check get(j+3) False ->do nothing, compare next
...

最佳答案

如果比较多个条件,请使用&&运算符,并使用方法.isSelected()来检查元素是否被选中。试试下面这个:

for (int i = 0; i < checkboxes.size() ; i++) {
if(checkboxes.get(i).isSelected() && colstatuslist.get(i).toUpperCase().equals("FALSE")){
checkboxes.get(i).click();
} else if((!checkboxes.get(i).isSelected()) && colstatuslist.get(i).toUpperCase().equals("TRUE")){
checkboxes.get(i).click();
}
}

关于java - 如何同时比较两个列表并执行条件操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com