跳转到java中的初始循环

时间:2018-03-20 10:26:40

标签: java arrays selenium testing selenium-webdriver

我目前正在使用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”时,它将不会进入下一个代码。阵列。

2 个答案:

答案 0 :(得分:2)

您可以标记循环并使用它:

myLoopForInitialCycle:
for(Smth smth : smths) {
    ...
    for(Smth smth2: smths2) {
        if (smth.equals(smth2) {
             continue myLoopForInitialCycle;
        }
    }
}

这闻起来像结构风格,必须采取一些措施来避免它,但我认为这正是你所要求的。

答案 1 :(得分:1)

您正在寻找breakcontinue个关键字。当从循环内调用时,它们将跳出循环或跳到当前迭代的末尾。

因此,您的潜在解决方案将如下所示:

for( String rt : rep_type ) {
  if ("Overlay Report".equals(rt)) {
    continue;
  }
  // rest of code