[英]for loop execute only once
代碼只執行一次。 免責聲明:很清楚這是一個無限循環,以這種方式編寫它作為解決問題的一部分。
更新:我的錯誤日志中有一個異常已修復,但問題仍然存在,代碼僅在我嘗試在相同代碼中為不同任務(打印句子)使用相同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");
}
由於拋出異常,代碼僅執行一次,或者您進行的一個或多個網絡調用花費的時間太長,使您相信代碼只執行一次。
為了確認您在 for 循環中使用的值i + 1
沒有被1
替換,我在我的機器上運行了以下循環:
for (int i = 0; i < i + 1; i++) {
System.out.println(i);
}
...它繼續打印從 0 開始的數字。
我只是想澄清這一點作為答案,因為我希望這個問題會被刪除。
for 循環不是你的問題。 您正在編寫有異常或阻塞正在運行的線程的代碼。 如果您使用另一個線程來運行它,則缺少UncaughtExceptionHandler
可能會使其跳過被記錄。 類似地,使用Callable<T>
可能會導致從個人經驗中吞下異常(也許出於同樣的原因?)。
如果您阻塞了運行它的線程,那么在阻塞方法將控制權返回到您調用它的上下文之前,該線程將不會運行其他任何東西。
鑒於你說你有循環“運行一次”但之后仍然打印的情況,我將把它作為一個例外,並且你運行測試的方式有缺陷。 這可能來自無數的原因,例如愚蠢的System#exit
/ Runtime#halt
調用、線程、使用服務來運行測試,或者在某些生產環境中運行它們,例如游戲服務器或手機(或。 .. 瀏覽器?)。 對於未來的情況,理想情況下,您的問題應該是可重現的,只需要一個主要方法和您提供的代碼。 如果你不能做這樣的例子,至少你應該提供你是如何測試它的。
如果你做了所有這些但仍然有問題,我認為這對你來說很明顯,或者在這里閱讀你的問題的人會更容易為你回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.