2015-11-03 2 views
1
@Before 
public void setUpRestClient() throws InterruptedException { 

    try { 

     driver.manage().timeouts().implicitlyWait(200, TimeUnit.SECONDS); 
     List<String> indexSuburbStatePost = new ArrayList<String>(); 

     indexSuburbStatePost.add("ABC"); 
     indexSuburbStatePost.add("YYZ"); 

     for (int j = 0; j < indexSuburbStatePost.size(); j++) { 
      System.out.println("for loop===>" + indexSuburbStatePost.get(j)); 


      mySchoolDriver(indexSuburbStatePost.get(j)); 

      Thread.sleep(10000); 
      List<String> indexNumberSchool = new ArrayList<String>(); 
      List<String> indexNameSchool = new ArrayList<String>(); 

      List<WebElement> elementsAdv = driver.findElements(By.xpath("//table[@id='SearchResults']/tbody/tr/td")); 
      System.out.println("Test advance elements number of elements: " + elementsAdv.size()); 

      writeToFile(indexSuburbStatePost.get(j)); 

      for (WebElement eleadv : elementsAdv) { 

       System.out.println("Text adv======>" + eleadv.getText()); 
       if (eleadv.getText().equalsIgnoreCase("Primary") 
         || eleadv.getText().equalsIgnoreCase("Secondary") 
         || eleadv.getText().equalsIgnoreCase("Government") 
         || eleadv.getText().equalsIgnoreCase("Combined") 
         || eleadv.getText().equalsIgnoreCase("Special") 
         || eleadv.getText().equalsIgnoreCase(
           "Non-government")) { 

       } else { 
        indexNameSchool.add(eleadv.getText()); 
       } 

      } 

      Iterator<String> indexNumberSchoolIteratorAA = indexNameSchool 
        .iterator(); 

      for (int k = 0; k < indexNameSchool.size(); k++) { 
       System.out.println("indexNumberSchoolIterator AA===>"+ indexNumberSchoolIteratorAA.next()); 
       writeToFile(indexNameSchool.get(k)); 

      } 
      List<WebElement> elementscss = driver.findElements(By.cssSelector("#SearchResults tr a")); 
      for (WebElement e : elementscss) { 
       String url = e.getAttribute("href"); 
       System.out.println(url.substring(url.length() - 5)); 
       indexNumberSchool.add(url.substring(url.length() - 5)); 
      } 

      for (int i = 0; i < indexNumberSchool.size(); i++) { 
       Thread.sleep(10000); 
       writeToFile(indexNumberSchool.get(i)); 

       try { 
        driver.findElement(By.xpath("//a[@href=\"/Home/Index/"+ indexNumberSchool.get(i) + "\"]")).click(); 
        driver.findElement(By.id("IAccept")).click(); 
        driver.findElement(By.className("captch-submit")).click(); 
       } catch (NoSuchElementException ex) { 
        do nothing, link is not present, assert is passed 
        System.out.println(" NoSuchElementException======>" + ex.getMessage()); 

        mySchoolDriver(indexSuburbStatePost.get(j)); 

        Thread.sleep(10000); 
        driver.findElement(By.xpath("//a[@href=\"/Home/Index/"+ indexNumberSchool.get(i) + "\"]")).click(); 
       } 
       driver.findElement(By.id("NaplanMenuButton")).click(); 
       try { 
        driver.findElement(By.xpath("//*[@id=\"NaplanMenu\"]/ul/li[2]/a")).click(); 
       } catch (ElementNotVisibleException envex) { 
        System.out.println(" ElementNotVisibleException======>"+ envex.getMessage()); 
       } 

       List<WebElement> elements = driver.findElements(By.xpath("//div[@id='ResultsInNumbersContainer']/table/tbody/tr")); 
       System.out.println("Test7 number of elements: " + elements.size()); 
       BufferedWriter writer = null; 
       File f = null; 
       for (WebElement ele : elements) { 
        if (ele.getAttribute("class").equalsIgnoreCase("selected-school-row")) { 
          writeToFile(ele.getText()); 
        } 
       } 
      } 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     driver.close(); 
    } 

} 

private void mySchoolDriver(String indxSuburbPost) { 
    driver.get("http://www.abc.xyz.com"); 
    driver.findElement(By.id("SuburbTownPostcodeSearch")).sendKeys(indxSuburbPost); 
    driver.findElement(By.id("SuburbTownPostcodeSearchSubmit")).submit(); 
} 

private void writeToFile(String indxSuburbPost) { 
    try{ 


    String filename = "C:/logs/data.txt"; 
    FileWriter fw = new FileWriter(filename, true); 
    fw.write(indxSuburbPost + "\n"); 
    fw.write("\n"); 
    fw.close(); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Привет друзья,Как сделать Селен хром веб-водитель быстро

я выше код и он работает нормально и получать данные, которые мне нужно. Моя единственная проблема: она очень медленная. Если вы посмотрите на коде, он место, где это происходит очень медленно то, где я цеплялся ошибки: улова (NoSuchElementException ех) И улова (ElementNotVisibleException ENVEX)

он принимает возрасты ошибки, чтобы получить caught.Can кто-то пожалуйста помоги.

+0

Пожалуйста, ознакомьтесь с руководством [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), особенно часть на примере Minimal, Complete и Verifiable (MCVE). Это поможет вам решить проблемы для себя. Если вы сделаете это и все еще застряли, вы можете вернуться и опубликовать свой MCVE, что вы пробовали, и каковы результаты, чтобы мы могли лучше вам помочь. – JeffC

ответ

3

Это из-за .implicitlyWait(), установленного в 200s. Когда элемент находится и не найден, он будет ждать 200 секунд. Мое предложение состоит в том, чтобы удалить неявное ожидание (и Thread.sleep() с) и заменить их явным ожиданием, используя WebDriverWait и ExpectedConditions.

WebDriver driver = new FirefoxDriver(); 
WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.elementToBeClickable(...)).click(); 

// as long as you are OK with the time setting in the above WebDriverWait declaration 
// (10 seconds), you can reuse the wait again and again with the same 10s wait. 
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(...)); 
wait.until(ExpectedConditions.elementToBeClickable(...)).click(); 

Read more о явных и неявных ждет и почему вы не должны смешивать их.

+0

Что делать, если я удалю весь неявный оператор? это приведет к сбою кода? –

+0

Есть один способ узнать ... – JeffC

+0

Нет, это не приведет к сбою вашего кода. Возможно, что код не будет завершен, потому что вам не хватает ожиданий здесь и там, которые нужно будет добавить. Это будет намного, намного быстрее, хотя ... – JeffC

Смежные вопросы