Проблема с PageFactory и передачей инстанса браузера


(Валерий) #1

Не могу настроить предачу инстанса браузера между тестами. На втором тесте(clickTo) вываливается "SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called." Тесты запусаю в IDE с помощью Junit. Подробности: существут клссс Инициализации браузера -  BasicTestCase, класс запуска тестов TestCase и несколько классов страниц. Вот код:

 

public class BasicTestCase {
    protected static WebDriver driver;
 
    protected WebDriver getWebDriver() {
        if (driver == null) {
            driver = new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(Long.parseLong(ConfigProperties.getProperty("IMP_WAIT")), TimeUnit.SECONDS);
        }
        return driver;
    }
 
    @After
    public void tearDown() throws Exception {
        driver.quit();
    }
}
 
 
public class TestCase extends BasicTestCase {
    private LoginPage loginPage = PageFactory.initElements(getWebDriver(), LoginPage.class);
    private HomePage homePage = PageFactory.initElements(getWebDriver(), HomePage.class);
    private SchedulePage schedulePage = PageFactory.initElements(getWebDriver(), SchedulePage.class);
 
    @Test
    public void authorizationTest() throws Exception {
 
        loginPage.open();
        homePage = loginPage.loginAs(user);
    }
 
    @Test
    public void  clickTo() throws Exception {
 
        schedulePage = homePage.goToSchedule();
        schedulePage.hello();
    }
}

 

public SchedulePage goToSchedule() throws Exception {
        scheduleIcon.click();
        return PageFactory.initElements(driver, SchedulePage.class);
    }
 
Буду очень признателен за ответ. Нагуглить ничего не удалось толкового.

 


(AlexAlex) #2

Секцию с импортом пожалуйста. Что это за аннотация @After?

@After

public void tearDown() throws Exception {

    driver.quit();
}
Если это она http://junit.sourceforge.net/javadoc/org/junit/After.html То tearDown совершенно правильно вызывается после выполнения первого тестового метода authorizationTest, квитит драйвер и на clickTo живого драйвера уже нет. И вы получаете исключение.
UPD.: А, и ну да, используйте AfterClass http://junit.sourceforge.net/javadoc/org/junit/AfterClass.html

(Валерий) #3

AfterClass помог ))  Спасибо большое за помощь!!!! 

 


(oleen) #4

То есть вы просто поменяли @After на @AfterClass ?


(mikhail.sidelnikov) #5

А если вы будете несколько классов с тестами запускать? тогда надо и в BeforeClass его инициализировать. Подумайте над этим


(Валерий) #6

Да, в этом проблема была. Сейчас,правда, много других ))))


(Валерий) #7

Спасибо за предупреждение, не учел. Тесты selenium пока использую в качестве smoke тестов - поэтому их мало, всего один класс ))) (p.s. но зато сколько нервов потрепал!!!)


(mikhail.sidelnikov) #8

Селениум он такой)) бывает)))