我目前正在使用Java + Selenium WebDriver创建一个程序,目前很难用Java循环技术。
以下是我的代码:
假设,
rt = {容量利用率,叠加报告}
fq = {15分钟,每小时,每日}
代码::
for( String rt : rep_type ) {
new Select(driver.findElement(By.name("reporttype"))).selectByVisibleText(rt);
for( String fq : freq ){
try {
Thread.sleep(2000);
new Select(driver.findElement(By.name("frequency"))).selectByVisibleText(fq);
Thread.sleep(3000);
} catch (Exception e){
e.printStackTrace();
}
Thread.sleep(1500);
try {
WebElement selectElement = driver.findElement(By.id("firstPeriod"));
Select select = new Select(selectElement);
List<WebElement> opts = select.getOptions();
------
-----
----
--
-
问题是,当&#39; rt&#39;等于&#34;覆盖报告&#34;,此报告没有元素匹配&#39; fq&#39;阵列。因此,它将进入同一循环中的下一个代码。
我怎样才能再次进入初始循环,
for( String rt : rep_type ) {
因此,当没有条件符合“fq”时,它将不会进入下一个代码。阵列。
答案 0 :(得分:2)
您可以标记循环并使用它:
myLoopForInitialCycle:
for(Smth smth : smths) {
...
for(Smth smth2: smths2) {
if (smth.equals(smth2) {
continue myLoopForInitialCycle;
}
}
}
这闻起来像结构风格,必须采取一些措施来避免它,但我认为这正是你所要求的。
答案 1 :(得分:1)
您正在寻找break
或continue
个关键字。当从循环内调用时,它们将跳出循环或跳到当前迭代的末尾。
因此,您的潜在解决方案将如下所示:
for( String rt : rep_type ) {
if ("Overlay Report".equals(rt)) {
continue;
}
// rest of code