Прочитал 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 форма логина заполняется и зависает. Подскажите, пожалуйста, как решить данную проблему.
olander
(olander)
December 10, 2012, 1:53pm
#2
Было бы неплохо увидеть лог ошибки - возможно там получиться увидеть какой-то полезный 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 ===============================================
olander
(olander)
December 10, 2012, 4:01pm
#4
Должен сказать, что я уже видел такую проблему. Возникает на этапе закрытия драйвера. У меня воспроизводится случайным образом.
Это вопрос уже обсуждался на форуме - посмотрите сдесь - 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...");
}
}
polusok
(Mykhailo Poliarush)
December 10, 2012, 5:10pm
#5
попробуйте скачать последнюю версию 2.27 и запустить снова этот же тест
у меня вопрос тут возник немного не по теме, но все же задам сюда, если не возражаете.
а как скачать последнюю версию 2.27? я пользуюсь maven для подключения библиотек.
сейчас на http://mvnrepository.com лежит
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.25.0</version>
</dependency>
AlexAlex
(AlexAlex)
December 11, 2012, 2:46pm
#7
На официальной странице информации 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/
Pnevmoslon
(Pnevmoslon)
December 11, 2012, 3:05pm
#8
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.27.0</version>
</dependency>
:)