2017-01-02 9 views
0

要件:過去3日間の求人検索であるリンクに移動します。 1)印刷ジョブの説明 2)あなたが最後のページに到達するまで、次のページに移動するには次のリンクをクリックしてページ終了リンクの試行例外を使用する

問題:私は、私は最後のページに到達したときに次のリンクが見つかりません、そのような要素のためのトライキャッチを使用しています。このソリューションを使用すると、テストが合格したか失敗したか分からないJUNITバーが表示され、スクリプトを停止します。これは、exitを使用したときから灰色のバーです。どのようにしてこのコードを改善して、私がキャッチして、合格テストのための緑色のバーを表示するのに使う必要はありませんか?

コード:あなたの時間との提案を事前に

import java.util.List; 
import java.util.concurrent.TimeUnit; 

import org.junit.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class QAJob { 

    @Test 
    public void jobSearch(){ 
     WebDriver driver= new FirefoxDriver(); 
     driver.get("https://www.indeed.com/jobs?as_and=qa+engineer&as_phr=&as_any=&as_not" 
       + "=&as_ttl=&as_cmp=&jt=all&st=&salary=&radius=10&l=Bellevue%2C+WA&fromage=7&limit" 
       + "=10&sort=date&psf=advsrch"); 
     driver.manage().window().maximize(); 

     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

     //code to scroll down to find the rest pages link 
     JavascriptExecutor jse = (JavascriptExecutor) driver; 
     jse.executeScript("window.scrollBy(0,1000)", ""); 

     // Find and print the number of pages for the search 
     List<WebElement> search_pages=driver.findElements(By.xpath("//div [contains(@class,'pagination')]//a")); 

     System.out.println("Number of pages found for this search " + search_pages.size()); 

     while(search_pages.size()!=0){ 
      List<WebElement> job_desc=driver.findElements(By.xpath("//div [contains(@id,'p')][contains(@class,'row')]")); 

      for(WebElement e:job_desc){ 
       String str_job_desc=e.getText(); 
       System.out.println(str_job_desc); 
      } 
      try 
      { 
       // closes the pop up that appears 
       driver.findElement(By.id("popover-x-button")).click(); 
      } 
      catch (Exception e) 
      { 


      } 

      try 
      { 
       //click on next link to go to next page 
       driver.findElement(By.xpath("//span[contains(@class,'np')][contains(text(),'Next')]")).click(); 

       //scroll down 
       JavascriptExecutor jse1 = (JavascriptExecutor) driver; 
       jse1.executeScript("window.scrollBy(0,1000)", ""); 
      } 
      //when I get the exception(because no next link is available) exit. 
      catch (org.openqa.selenium.NoSuchElementException e) 
      { 
       System.exit(0); 
      } 
     } 

    } 
} 

感謝。

+0

うーん次のブロックに拡張します'System.exit()'? JUnitテストでこれを使用する理由はありません。 (Javaの中でこれを使用する理由はほとんどありません。)しかし、あなたがテストしようとしていることは分かりません。例外が発生した場合、テストは失敗しますか?ループを終了することを意味しますか? 'while'ループを終了したいだけの場合は、' break; 'を使います。それ以外に、あなたの合格基準や不合格基準が何であるかは明確ではないので、私はアドバイスを提供することはできません。 – ajb

+0

URLによって入力されているページの印刷ジョブの説明。私が第3ページに到達し、仕事の説明が印刷されたらコードを停止します。 exit()を使用しないと、最後のページ(この場合は3ページ目)から何度も何度も印刷ジョブの説明を続けると、テストは決して停止しません。 –

答えて

1

のtry-catchを避けるために、あなたのコード内で使用されますが、実際に再使用することができますトリックブロック

List<WebElement> popXButton=driver.findElements(By.id("popover-x-button")); 
    if (popXButton.size()>0){ 
     driver.findElement(By.id("popover-x-button")).click(); 
    } 

同じでは使用しません...あまりにも

List<WebElement> nextVal=driver.findElements(By.xpath("//span[contains(@class,'np')][contains(text(),'Next')]")); 
if(nextVal.size()>0){ 
    driver.findElement(By.xpath("//span[contains(@class,'np')][contains(text(),'Next')]")).click(); 
} 
else{ 
    break;//exits while loop! 
} 
+0

上記の解決策が動作するかどうか教えてください – prithvi394

+0

それは動作し、テストは合格しました。ありがとう –

関連する問題