有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 Java for loop总是返回true

我有下面的代码。这里的结果总是通过,因为我有两个失败的场景

List<WebElement> webElementslist = driver.findElements(By.className("安卓.widget.TextView"));
for (WebElement webElementlist : webElementslist)
{
    // System.out.println("Start Application"+webElementlist.getText());
    for (int i = 2; i <= DisText.getRowCount("TRAText"); i++)
    {
        // System.out.println("Start Excel"+DisText.getCellData("TRAText", "Description", i));
        if (webElementlist.getText().equals(DisText.getCellData("TRAText", "Description", i)))
        {
            tflag = true;
        }
    }
    if (tflag)
        extent.log(LogStatus.PASS, "Display Text", "Its Pass");
    // Reporter.log("Pass");
    else
        extent.log(LogStatus.FAIL, "Display Text", "Its Fail");
}

共 (4) 个答案

  1. # 1 楼答案

    下面是示例代码

    List<WebElement> webElementslist = driver.findElements(By.className("android.widget.TextView"));
            for (WebElement webElementlist : webElementslist) {
                //System.out.println("Start Application"+webElementlist.getText());
                for (int i = 2; i <= DisText.getRowCount("TRAText"); i++) {
                    //System.out.println("Start Excel"+DisText.getCellData("TRAText", "Description", i));
                    if (webElementlist.getText().equals(DisText.getCellData("TRAText", "Description", i))) {
                        tflag = true;
                        break;
                    } else {
                        tflag = false;
                        break;
                    }
                }
                if (tflag)
                    extent.log(LogStatus.PASS, "Display Text", "Its Pass");
                    //Reporter.log("Pass");
                else
                    extent.log(LogStatus.FAIL, "Display Text", "Its Fail");
            }
    
  2. # 2 楼答案

    在我看来,下面是一个示例代码

     for (WebElement webElementlist : webElementslist)
    {
    tflag = false;
    
    for (int i = 2; i <= DisText.getRowCount("TRAText"); i++)
    {
        // System.out.println("Start Excel"+DisText.getCellData("TRAText", "Description", i));
        if (webElementlist.getText().equals(DisText.getCellData("TRAText", "Description", i)))
        {
            tflag = true;
        }
    }
    if (tflag)
        extent.log(LogStatus.PASS, "Display Text", "Its Pass");
    // Reporter.log("Pass");
    else
        extent.log(LogStatus.FAIL, "Display Text", "Its Fail");
    }
    

    编辑:我更改了代码-感谢@Jeff C的澄清

  3. # 3 楼答案

    你错过了几件事。首先,需要在内部循环之前将tflag设置为false,因为一旦将其设置为true,它将永远不会被设置为false。第二,我认为一旦你找到匹配的人,你就会想要打破内部循环。我在下面的代码中添加了新的语句和注释,以便您可以看到它们

    List<WebElement> webElementslist = driver.findElements(By.className("android.widget.TextView"));
    for (WebElement webElementlist : webElementslist)
    {
        tflag = false; // need to reset tflag for each element
        for (int i = 2; i <= DisText.getRowCount("TRAText"); i++)
        {
            if (webElementlist.getText().equals(DisText.getCellData("TRAText", "Description", i)))
            {
                tflag = true;
                break; // break out of for loop when match is found... for each element
            }
        }
        if (tflag)
            extent.log(LogStatus.PASS, "Display Text", "Its Pass");
        else
            extent.log(LogStatus.FAIL, "Display Text", "Its Fail");
    }
    
  4. # 4 楼答案

    for (WebElement webElementlist : webElementslist)
    {
        tflag = false;// initialize..it will be true only if condition is true
        for (int i = 2; i <= DisText.getRowCount("TRAText"); i++)
        {
            // System.out.println("Start Excel"+DisText.getCellData("TRAText", "Description", i));
            if (webElementlist.getText().equals(DisText.getCellData("TRAText", "Description", i)))
            {
                tflag = true;
            }
        }
        if (tflag)
            extent.log(LogStatus.PASS, "Display Text", "Its Pass");
        // Reporter.log("Pass");
        else
            extent.log(LogStatus.FAIL, "Display Text", "Its Fail");
    }