Page Objects + Selenium WebDriver

Прочитал http://code.google.com/p/selenium/wiki/PageObjects, решил попробовать.
Написал по приметру 2 класса:

public class LoginPageMy {
    
    private WebDriver driver;

    public LoginPageMy(WebDriver driver) {
        this.driver = driver;
    }

    public HomePageMy loginAs(String username, String password) {
        driver.get("http://****************");
        driver.findElement(By.id("userNameId")).clear();
        driver.findElement(By.id("userNameId")).sendKeys(username);
        driver.findElement(By.id("password")).clear();
        driver.findElement(By.id("password")).sendKeys(password);
        driver.findElement(By.name("Submit")).submit();
        return new HomePageMy (driver);
    }   
}

***********************************

public class HomePageMy {

    private WebDriver driver;

    public HomePageMy(WebDriver driver) {
        this.driver = driver;
    }
}

Потом создал простенький тест, с вызовом метода loginAs:

public class TestLoginPage {
    
    public class TestTest {
        private WebDriver driver;

        @BeforeTest
        public void setUp() {
            driver = new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        }

        @Test
        public void TestLogin(){
            driver.manage().window().maximize();
            LoginPageMy user = new LoginPageMy (driver);
            user.loginAs("name", "password");    
    }

        @AfterTest
        public void tearDown() {
            driver.quit();
        }
    }
}

Но выполняя тест через  TestNG форма логина заполняется и зависает.
Подскажите, пожалуйста, как решить данную проблему.

 

Было бы неплохо увидеть лог ошибки - возможно там получиться увидеть какой-то полезный exception.

Навскидку могу сказать, что проблема можеть быть в инициализации класса HomePageMy.

 

Вам нужно использовать PageFactory паттерн - http://code.google.com/p/selenium/wiki/PageFactory

В Вашем случае получится так:

 

return PageFactory.initElements(driver,HomePageMy.class);

Как по мне, это может Вам помочь.

FAILED CONFIGURATION: @AfterTest tearDown
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:08:56'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_07'
Driver info: driver.version: RemoteWebDriver

FAILED: TestLogin
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:08:56'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_07'
Driver info: driver.version: RemoteWebDriver

===============================================
    Default test
    Tests run: 1, Failures: 1, Skips: 0
    Configuration Failures: 1, Skips: 0
===============================================
 

Должен сказать, что я уже видел такую проблему. Возникает на этапе закрытия драйвера. У меня воспроизводится случайным образом. 

Это вопрос уже обсуждался на форуме - посмотрите сдесь - http://automated-testing.info/forum/unreachablebrowserexception-error-communicating-remote-browser-it-may-have-died

Сначала я пытался докопаться до сути проблемы, но потратив достаточно много времени, решил пойти по пути наименьшего сопротивления (я, конечно, принял во внимание то, что у меня тесты работали хорошо, а проблемы были только на tearDown):

 

@AfterSuite
    public void tearDown() throws Exception{
        try{
            driver.quit();
        }
        catch (UnreachableBrowserException e){
            logWarning("Driver has some problems with shutting down. Skipping exception...");
        }
    }

 

попробуйте скачать последнюю версию 2.27 и запустить снова этот же тест

у меня вопрос тут возник немного не по теме, но все же задам сюда, если не возражаете.

а как скачать последнюю версию 2.27? я пользуюсь maven для подключения библиотек. 

сейчас на http://mvnrepository.com лежит 

 

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.25.0</version>
</dependency>
            
 
 
 

 

На официальной странице информации WebDriver по поводу Maven написано:

If you're using Maven, you will find all Selenium Maven artifacts directly in the central Maven repository here: http://repo1.maven.org/maven2/org/seleniumhq/selenium/

 

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.27.0</version>
</dependency>
 
:)