要件:過去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);
}
}
}
}
感謝。
うーん次のブロックに拡張します'System.exit()'? JUnitテストでこれを使用する理由はありません。 (Javaの中でこれを使用する理由はほとんどありません。)しかし、あなたがテストしようとしていることは分かりません。例外が発生した場合、テストは失敗しますか?ループを終了することを意味しますか? 'while'ループを終了したいだけの場合は、' break; 'を使います。それ以外に、あなたの合格基準や不合格基準が何であるかは明確ではないので、私はアドバイスを提供することはできません。 – ajb
URLによって入力されているページの印刷ジョブの説明。私が第3ページに到達し、仕事の説明が印刷されたらコードを停止します。 exit()を使用しないと、最後のページ(この場合は3ページ目)から何度も何度も印刷ジョブの説明を続けると、テストは決して停止しません。 –