2

Я использую Selenium-serenity для моего теста интеграции. По умолчанию selenium интегрирует FirefoxDriver для WebDriver, но теперь я пытаюсь использовать PhantomJS. Я не мог найти до сих пор, как правильно установить драйвер после инициализации.Set PhantomJS webDriver on Serenity

До сих пор, что я сделал это переопределить метод getDriver() из pageObject и вернуть phantomJs WebDriver

private static WebDriver webDriver; 

@Override 
public WebDriver getDriver() { 
    if (webDriver == null) { 
     DesiredCapabilities caps = new DesiredCapabilities(); 
     caps.setJavascriptEnabled(true); 
     caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/pabloperezgarcia/Downloads/phantomjs"); 
     webDriver = new PhantomJSDriver(caps); 
     setDriver(webDriver); 
    } 
    return webDriver; 
} 

Но проблема заключается в том, что каждое отдельное действие над WebDriver не распространяются на другие страницы, потому что, конечно мы возвращаем только singleton webDriver, но не super.getDriver().

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

С Firefox кажется работает отлично.

+0

Как вы управляете своими объектами? Вы пытались передать phantomjs в качестве значения свойства webdriver.driver? Вы проводите тесты локально или удаленно? – user2272115

+0

Использование Serenity с по умолчанию webDriver (Firefox) Я не создавал никакого файла свойств, просто аннотации к моему коду, и все работало нормально – paul

ответ

2

Вам необходимо установить свойство webdriver.driver в phantomjs. С безмятежностью это можно передать через командную строку, определенную в файле свойств или аннотированную в коде. Вам также может потребоваться указать местоположение драйвера phantomjs через системное свойство -Dphantomjs.binary.path=path/to/driver.

Вы упомянули, что используете аннотации, вы пробовали @Managed(driver="phantomjs")?

Вы можете также пройти через командную строку (в вашем IDE было бы в конфигурации запуска) -Dwebdriver.driver=phantomjs

Имейте в виду, если вы работаете тесты удаленно, вы можете также необходимо установить phantomjs.webdriver свойство к порту вы хотите для запуска.

Вы можете также установить свойство с помощью Maven:

<properties> 
    <webdriver.driver>phantomjs</webdriver.driver> 
</properties> 

, а затем в вашем безотказноге плагина определить свойство

<plugin> 
    <artifactId>maven-failsafe-plugin</artifactId>     
    <version>2.18</version> 
    <configuration> 
     <systemProperties> 
      <webdriver.driver>${webdriver.driver}</webdriver.driver> 
     </systemProperties> 
    </configuration> 
</plugin> 

системы Если вы хотите, чтобы определить поставщик пользовательских драйверов, вам необходимо сделать убедитесь, что вы внедрили DriverSource и определите следующие свойства: webdriver.driver, webdriver.provided.type, webdriver.provided.mydriver, thucydides.driver.capabilities

Документация по содержанию: http://thucydides.info/docs/serenity-staging/

+0

Любая ссылка, где я могу видеть, как настроить безмятежность, чтобы использовать файл свойств ?. Прямо сейчас я просто запускаю тест с помощью отказоустойчивого Maven, а также через мою среду IDE. И где я должен поставить эту аннотацию? @Managed (driver = "phantomjs") в классе Steps? – paul

+0

Я обновил свой ответ, чтобы ответить на ваши вопросы. Какую IDE вы используете? – user2272115

+0

Intellij, спасибо! – paul