тест на селен maven - PullRequest
       5

тест на селен maven

3 голосов
/ 17 октября 2011

Я использую селен 2.8. Я получаю сумасшедшую ошибку, как это:

testPersistence(com.***.***.selenium.test.PersistenceTest)  Time elapsed: 0.032 sec  <<< ERROR!
java.lang.RuntimeException: Could not start Selenium session: ^@
        at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:107)
        at com.***.***.selenium.test.PersistenceTest.testPersistence(PersistenceTest.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:120)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:103)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:169)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
        at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
Caused by: com.thoughtworks.selenium.SeleniumException: ^@
        at com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:112)
        at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:106)
        at com.thoughtworks.selenium.HttpCommandProcessor.getString(HttpCommandProcessor.java:275)
        at com.thoughtworks.selenium.HttpCommandProcessor.start(HttpCommandProcessor.java:237)
        at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:98)
        ... 28 more

Мой тестовый класс очень прост. вот такой вот тест:

@Test
public void testPersistence() throws InterruptedException {
    DefaultSelenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost:8080");
    selenium.start();
    selenium.waitForPageToLoad("30000");
    selenium.open("/***/register.seam");
    selenium.waitForPageToLoad("30000");
    selenium.type("registration:username", "jackman");
    Thread.sleep(5000);
    selenium.type("registration:name", "Jack Daniels");
    Thread.sleep(5000);
    selenium.type("registration:password", "123456789");
    Thread.sleep(5000);
    selenium.click("registration:register");
    selenium.waitForPageToLoad("30000");
    Thread.sleep(5000);
    assertTrue(selenium.isTextPresent("regexpi:Welcome"));
    selenium.stop();
}

Может кто-нибудь помочь мне, пожалуйста?

заранее спасибо

Ответы [ 3 ]

2 голосов
/ 30 мая 2012

Ваш pom.xml отсутствует, так что трудно судить, что происходит не так.

Однако в простом тестовом проекте мне нужно только в моем файле pom.xml следующее в разделе «зависимости» (обратите внимание, я использую Selenium 2.22.0 вместо 2.8):

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <scope>test</scope>
        <version>2.22.0</version>
    </dependency>

Я вызываю свои тесты, используя TestNG, но он также должен работать с JUnit.

Мой тестовый пример выглядит следующим образом. Я удалил все, что связано с настройками прокси, поэтому пример, возможно, даже можно упростить:

    FirefoxProfile profile = new FirefoxProfile();
    FirefoxBinary firefoxBinary = new FirefoxBinary();
    WebDriver driver = new FirefoxDriver(firefoxBinary, profile);
    driver.get("http://www.google.com");
    Assert.assertEquals("Google", driver.getTitle().trim());

Так что одной из проблем может быть то, что вы используете устаревшую версию Selenium (2.8). Также способ, которым вы устанавливаете свой DefaultSelenium, выглядит неправильно для меня. Кроме того, для Firefox вам не нужен работающий сервер Selenium.

Другая вещь, которую я не понимаю, это ожидание в течение 30 секунд непосредственно после запуска селена. Чего вы ждете?

0 голосов
/ 25 ноября 2012

Как заметил @Ozyman, похоже, вы еще не запустили Selenium Server.Selenium Server должен работать в фоновом режиме, если вы хотите использовать Selenium RC для создания ваших тестов.

Вы можете использовать Selenium Maven Plugin для запуска Selenium Server перед выполнением интеграционных тестов с помощьюдобавив следующую конфигурацию плагинов в ... Плагин Maven Failsafe запустит интеграционные тесты, если вы добавите следующую конфигурацию плагина в ....

<plugin>
  <artifactId>maven-failsafe-plugin</artifactId>
  <version>2.12.4</version>
  <executions>
    <execution>
     <id>run-integration-tests</id>
     <phase>integration-test</phase>
     <goals>
       <goal>integration-test</goal>
     </goals>
     <inherited>false</inherited>
   </execution>
 </executions>

На сайте для плагина Selenium Maven есть руководство о том, как использовать принудительный запуск плагина Maven Surefire как часть интеграции-фаза тестирования жизненного цикла сборки.

Если вы собираетесь писать множество модульных тестов на основе Selenium, вам может пригодиться S elenium JUnit 4 Class Runner , полезный для уменьшения количества котельной плиты, которое вам нужно добавить.

0 голосов
/ 08 ноября 2012

Ответ Maven Cookbook Выполнение теста на селен с Maven.

...