2017-09-14 6 views
0

すべてのdiv IDを収集し、それらを1つずつループして繰り返しを行うシナリオがあります。私はシナリオを実行しましたが、すべてのIDを渡すのに時間がかかります。idsを見つけるためにループを高速化する方法

もっと速くする方法を教えてください。

以下は私のコードスニペットです。

List<WebElement> listoftab = driver.findElements(by.xpath(".//*[contains (@id, 'tabZ')]/div/div[1]")); 
Thread.sleep(1000);   
String clas1 = "tablist"; 
String clas2 = "tabView"; 
for(int i =1; i<=110;i++){ 
    boolean present; 
    try { 
     driver.findElement(By.xpath(".//*[@id='tabZ"+i+"']/div/div[1]")); 
     present = true; 
     if(clas1.equalsIgnoreCase(driver.findElement(By.xpath(".//*[@id='tabZ"+i+"']/div/div[1]")).getAttribute("class"))) { 
      tabloop: 
      for(int j=1;j<=15;j++) { 
       if(clas2.equalsIgnoreCase(driver.findElement(By.xpath(".//*[@id='tabZ"+i+"']/div/div[1]/div["+j+"]")).getAttribute("class"))) { 
        String ls = driver.findElement(By.xpath(".//*[@id='tabZ"+i+"']/div/div[1]/div["+j+"]")).getAttribute("id"); 
        System.out.println(ls); 
        driver.findElement(By.xpath(".//*[@id='"+ls+"']/div[1]/div[2]/canvas[2]")).click(); 
        Thread.sleep(3000); 
        break tabloop; 
       } 
      } 
     } 
    } catch (NoSuchElementException e) { 
     present = false; 
     continue; 
    } 
} 
+1

私たちは何をすべきかを理解できるようにhtmlを表示できます – SaiPawan

+0

これを早くする最も明白な方法は、それらのスリープを削除することです。スリープを使用しないでください:待機を使用すると、ある条件が満たされた直後に進むことができます。 –

+0

インデントを修正してください。その読みにくいです... –

答えて

0

あなたは要素ではなく、変数に保存見つけることを避けるためにdriver.findElement()複数times.Tryを使用しているとして、このコードを試してみてください。

List<WebElement> listoftab = driver.findElements(By 
      .xpath(".//*[contains (@id, 'tabZ')]/div/div[1]")); 
    Thread.sleep(1000); 
    String clas1 = "tablist"; 
    String clas2 = "tabView"; 
    for (int i = 1; i <= 110; i++) { 
     boolean present; 
     try { 
      WebElement element=driver.findElement(By.xpath(".//*[@id='tabZ" + i 
        + "']/div/div[1]")); 
      present = true; 
      if (clas1.equalsIgnoreCase(element.getAttribute("class"))) { 
       tabloop: for (int j = 1; j <= 15; j++) { 
        WebElement element1=driver.findElement(
          By.xpath(".//*[@id='tabZ" + i 
            + "']/div/div[1]/div[" + j + "]")); 
        if (clas2.equalsIgnoreCase(element1 
          .getAttribute("class"))) { 
         String ls = element1.getAttribute("id"); 
         System.out.println(ls); 
         driver.findElement(
           By.xpath(".//*[@id='" + ls 
             + "']/div[1]/div[2]/canvas[2]")) 
           .click(); 
         break tabloop; 
        } 
       } 
      } 
     } catch (NoSuchElementException e) { 
      present = false; 
      continue; 
     } 
    } 

さらにお待ちください。流暢にお待ちください。

関連する問題