for循环仅执行一次

时间:2019-08-24 17:19:00

标签: java loops for-loop infinite-loop

代码仅执行一次。 免责声明:非常清楚这是一个无限循环,以这种方式编写它是解决问题的一部分。

更新:我的错误日志中有一个已解决的异常,问题仍然相同,代码仅执行一次 我尝试在同一代码中使用相同的for循环来执行不同的任务(打印句子),但工作正常,问题一定出在我的JS代码上。

for(int i=0; i<i+1;i++) {
    ((JavascriptExecutor)driver).executeScript("window.open()"); 
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); 
    driver.switchTo().window(tabs.get(1));
    driver.get("https://www.google.com");
}

2 个答案:

答案 0 :(得分:1)

由于抛出异常,代码仅执行一次,或者您正在进行的一个或多个网络调用时间过长,使您认为代码仅执行一次。

要确认您在for循环中使用的值i + 1不会被1取代,我在计算机上运行了以下循环:

for (int i = 0; i < i + 1; i++) {
    System.out.println(i);
}

...然后继续打印从0开始的数字。

答案 1 :(得分:0)

我只想澄清这一点作为答案,因为我希望这个问题能够解决。

for循环不是您的问题。您正在编写有异常或正在阻止正在运行的线程的代码。如果您使用另一个线程来运行此线程,则缺少UncaughtExceptionHandler可能会使其跳过记录。同样,使用Callable<T>可能会导致个人经验(也许是出于相同的原因?)吞没了例外。

如果您要阻止正在运行它的线程,那么该线程将不会运行任何其他操作,直到阻塞方法将控制权返回给您调用它的上下文为止。

鉴于您说您遇到了循环“运行一次”但仍在打印后的情况,我将其作为例外,并且您运行测试的方式存在缺陷。这可能有多种原因,例如愚蠢的System#exit / Runtime#halt调用,线程,使用服务运行测试或在某些生产环境(例如游戏服务器或计算机)中运行测试电话(或...浏览器?)。对于将来的情况,理想情况下,除了主要方法和您提供的代码外,您的问题应该可以重现。如果您无法举这样的例子,则至少应提供如何进行测试。

如果您完成所有这些操作后仍然遇到问题,我想这对您来说很明显,或者在这里阅读您问题的人可以轻松地为您回答问题。