Java 如何退出此循环?

Java 如何退出此循环?,java,selenium-webdriver,Java,Selenium Webdriver,我是个初学者,不明白为什么这个循环不会中断。 我需要删除一些用户,对于每个用户,如果我确定要删除该用户,系统会提示我。 所以我做了以下循环: while (!alert && delete_button_is_present) { clickDeleteBtn; if(alert) { driver.switchTo().alert().accept(); } else if(delete_button_is_not_p

我是个初学者,不明白为什么这个循环不会中断。 我需要删除一些用户,对于每个用户,如果我确定要删除该用户,系统会提示我。 所以我做了以下循环:

while (!alert && delete_button_is_present)
{
    clickDeleteBtn;

    if(alert)
    {
        driver.switchTo().alert().accept();
    }

    else if(delete_button_is_not_present)
    {
        break;
    }
}

问题是,删除所有用户后,删除按钮不再存在,测试仍在寻找该按钮。

让我们浏览一下您的代码

while (!alert && delete_button_is_present)
    {
    clickDeleteBtn;

    if(alert)
    {
        driver.switchTo().alert().accept();

        else if(delete_button_is_not_present)
        {
            break;
        }
    }

您的意思是,只要没有警报,并且屏幕上有一个删除按钮,您就希望继续此循环。首先,单击删除按钮。如果没有关于此按钮的任何信息,我将假定它与循环无关。你说如果(警报),但如果有警报,你首先不会在循环中…因此循环重复

确保删除按钮存在,或者至少可以在clickDeleteButton或driver.switchTo().alert().accept()中修改,否则该条件永远无法满足


不过,我对您的代码有一些问题,如果它们得到清理,可能会有所帮助:您有delete_button_存在,delete_button_不存在。你可以扔掉不在场的东西,直接使用!删除按钮存在。为什么有一个else-if没有与if-inside-if(警报)配对?如果您的意思是If(警报),那么If(!delete_button_present),那么您只需要一个If语句。否则,如果在if(警报)之外,您需要该else。

没有任何内容正在更新删除按钮。\u在您的循环中存在。
if
块的
if
块是否在您的代码中?该代码不编译该循环显然有效(单击x按钮并关闭它后面的提示,然后转到下一个用户)直到删除按钮不再出现在页面上,之后我得到NoSuchElementException:无法找到元素“deletebutton”。我需要的是当删除按钮不再出现在页面上时停止我的循环。如果听起来像是在循环已经开始后删除了删除按钮。我们需要查看代码的其余部分来修复逻辑。或者,您可以只放置clickDeleteBtn;在if语句中。