У меня есть тестовый класс с четырьмя одинаковыми тестами (из-за этой ошибки). Я не понимаю, почему три из них проходят хорошо, а один выдает мне ошибку. Может кто-нибудь сказать мне, где проблема? Вот код класса:
package tests;
import Pages.SinCityPage;
import Pages.SpartaPage;
import model.Sin;
import model.SinTagsEnum;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PageFactoryExampleTest extends Base
{
protected String siteUrl = "/sincity.php";
protected String spartaSiteUrl = "/sparta.php";
protected SinCityPage sinCityPage;
protected SpartaPage spartaPage;
@Before
public void setUp() throws IOException {
driver.get(baseUrl + siteUrl);
this.sinCityPage = new SinCityPage(driver);
this.spartaPage = new SpartaPage(driver);
}
@Test
public void test1() throws InterruptedException {
Sin sin = this.createSin();
sinCityPage.openSinDetail(sin);
sinCityPage.fillForm(sin);
sinCityPage.openSinDetail(sin);
sinCityPage.checkSinDetail(sin);
driver.get(baseUrl + spartaSiteUrl);
spartaPage.checkSins();
spartaPage.checkForgive();
}
@Test
public void test2() throws InterruptedException {
Sin sin = this.createSin();
sinCityPage.openSinDetail(sin);
sinCityPage.fillForm(sin);
sinCityPage.openSinDetail(sin);
sinCityPage.checkSinDetail(sin);
driver.get(baseUrl + spartaSiteUrl);
spartaPage.checkSins();
spartaPage.checkForgive();
}
@Test
public void test3() throws InterruptedException {
Sin sin = this.createSin();
sinCityPage.openSinDetail(sin);
sinCityPage.fillForm(sin);
sinCityPage.openSinDetail(sin);
sinCityPage.checkSinDetail(sin);
driver.get(baseUrl + spartaSiteUrl);
spartaPage.checkSins();
spartaPage.checkForgive();
}
@Test
public void test4() throws InterruptedException {
Sin sin = this.createSin();
sinCityPage.openSinDetail(sin);
sinCityPage.fillForm(sin);
sinCityPage.openSinDetail(sin);
sinCityPage.checkSinDetail(sin);
driver.get(baseUrl + spartaSiteUrl);
spartaPage.checkSins();
spartaPage.checkForgive();
}
private Sin createSin() {
List<SinTagsEnum> tags = new ArrayList<SinTagsEnum>();
tags.add(SinTagsEnum.BLACK_MAIL);
tags.add(SinTagsEnum.HIJACK);
return new Sin("Vrazda", "Ja", "Vrazda spojena s lupeznzm prepadnutim muchy v zapadnutej ulicke", tags);
}
}
Вот Базовый класс
package tests;
import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.WebDriver;
import services.WebDriverService;
import java.io.IOException;
public class Base
{
protected WebDriver driver;
protected String baseUrl = "http://seleniumweb2";
@Before
public void baseBefore() throws IOException {
this.driver = (new WebDriverService()).getDriver();
//this.driver = (new WebDriverService()).getDriver(WebDriverService.GECKO_EXE);
}
@After // It can not be AfterClass because of closing browsers on remote server
public void baseAfter()
{
try {
//driver.close(); // Closes current active window with focus on. Other windows opened bz driver remain open.
driver.quit(); // Closes all opened windows by this driver.
} catch ( Exception e ) {
System.out.println("Base::baseAfter() throws exception: " + e.getMessage());
}
}
}
Вот класс драйвера
package services;
import model.BrowsersEnum;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.MalformedURLException;
import java.net.URL;
public class WebDriverService
{
public static String CHROME_EXE = "chromedriver.exe";
public static String PHANTOM_EXE = "phantomjs.exe";
public static String GECKO_EXE = "geckodriver.exe";
public static String HUB_URL = "http://127.0.0.1:4444/wd/hub";
private WebDriver driver = null;
/**
* This returns singleton driver
* @return
* @throws MalformedURLException
*/
public WebDriver getDriver() throws MalformedURLException {
String browser = System.getProperty("browser").toLowerCase();
if (browser.equals(BrowsersEnum.CHROME.getValue())) {
this.driver = new RemoteWebDriver(this.getRemoteUrl(), new ChromeOptions());
} else if (browser.equals(BrowsersEnum.FIREFOX.getValue())) {
this.driver = new RemoteWebDriver(this.getRemoteUrl(), new FirefoxOptions());
} else {
throw new IllegalArgumentException("Base::getDriver() invalid argument: " + browser);
}
return this.driver;
}
/**
* Avoid using Selenium server GRID
* @param which
* @return
*/
public WebDriver getDriver(String which) {
if (which == PHANTOM_EXE) {
System.setProperty("phantomjs.binary.path", PHANTOM_EXE);
this.driver = new PhantomJSDriver();
} else if (which == CHROME_EXE) {
System.setProperty("webdriver.chrome.driver", CHROME_EXE);
this.driver = new ChromeDriver();
} else if (which == GECKO_EXE) {
System.setProperty("webdriver.chrome.driver", GECKO_EXE);
this.driver = new FirefoxDriver();
}
return this.driver;
}
/**
* Remote selenium server (nodes) needs to have new instance for every test (not singleton).
* Otherwise on the driver.quit() lose the session.
* @return
* @throws MalformedURLException
*/
public URL getRemoteUrl() throws MalformedURLException {
URL url = new URL( HUB_URL );
return url;
}
}
А вот скриншот Журнал ошибок Дженкинса

Это сводит меня с ума. Я действительно не знаю, что происходит.