有 Java 编程相关的问题?

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

java“return”没有返回到调用函数

我想在收件箱中搜索一封主题行的邮件,邮件需要一些时间才能进入邮箱。如果在迭代中没有找到电子邮件,那么等待一段时间,然后再次搜索电子邮件,当找到电子邮件时返回true

public boolean searchForEmail(String MySubject, String linkAddress, String attachment) {
    boolean flag = false;
    List<WebElement> unreademeil = driver.findElements(By.xpath(""));
    for (int i = 0; i < unreademeil.size(); i++) {
        if ((unreademeil.get(i).isDisplayed()) == true) {
            System.out.println(unreademeil.get(i).getText());
            if (unreademeil.get(i).getText().contains(MySubject)) {
                unreademeil.get(i).click();
                flag=true;
                break;
            }
        }
    }
    if (!flag) {
        System.out.println("No mail with Subject ::--:: " + MySubject);
        while (counter < 40 && !flag) {
            sleep(10000);
            counter++;
            cloop();
        }
        SoftAssertor.asserTrue(isElementPresent("//*[contains(@text()='" + MySubject + "')]"),
                "Failed to search a email with Subject line  ::: " + MySubject);
    }
return flag; 
}



public void cloop(){
searchForEmail(SubjectLine, seeDetailsLink, "xpath");
}

上面的程序是搜索带有主题行的电子邮件。有时收到一封电子邮件需要时间。所以这个项目是睡眠后继续搜索(10000)

问题出现在return语句中,在while循环下,“return flag”语句重定向到“cloop()”,即使不满足while循环的条件,即“flag==true”; 因为这个程序是无限循环的。请帮忙


共 (1) 个答案

  1. # 1 楼答案

    重构是一种解决方案:

    public boolean searchForEmail(String MySubject, String linkAddress, String attachment) {
            boolean flag = false;
            sleep(200);
            List<WebElement> unreademeil = driver.findElements(By.xpath("//*[@class='bqe']"));
            for (int i = 0; i < unreademeil.size(); i++) {
                if ((unreademeil.get(i).isDisplayed()) == true) {
                    System.out.println(unreademeil.get(i).getText());
                    if (unreademeil.get(i).getText().contains(MySubject)) {
                        unreademeil.get(i).click();
                        flag=true;
                        break;
                    }
                }
            }
            return flag=true
        }
    
        public boolean isSearchPassed(String MySubject, String linkAddress, String attachment){
            boolean flag= false;
            int count =0;
            while (!searchForEmail( MySubject, linkAddress,  attachment) && (count< 45)) {
                sleep(10000);count++;   
            }
            return flag=true;
        }