Ответ 1
Оказывается, цели "start-server" и "stop-server" предназначены для запуска/остановки серверов SeleniumRC. Это НЕ то, что я хотел, поскольку все мои тесты используют API WebDriver.
По-видимому, цель "xvfb" в pom DOES запускает сеанс Xvfb в течение указанной фазы жизненного цикла - я думаю, я просто не видел этого раньше. И в этой конфигурации вы указываете, где писать подробные описания реквизита, на которых отображается Xvfb. В коде Java этот файл можно прочитать, а значение передано в FirefoxBinary, используемое при создании WebDriver.
Соответствующие биты pom.xml следующие:
<properties>
<displayProps>target/selenium/display.properties</displayProps>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<display.props>${displayProps}</display.props>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>xvfb</id>
<phase>test-compile</phase>
<goals>
<goal>xvfb</goal>
</goals>
<configuration>
<displayPropertiesFile>${displayProps}</displayPropertiesFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Это запускает Xvfb на первом бесплатном дисплее (: 20 или выше) и записывает значение в файл реквизита, который я читаю и использую позже в своем Java-коде.
String xvfbPropsFile = System.getProperty("display.props");
FirefoxBinary ffox = new FirefoxBinary();
ffox.setEnvironmentProperty("DISPLAY", /*read value from xvfbPropsFile*/);
WebDriver driver = new FirefoxDriver(ffox);
Теперь драйвер будет контролировать экземпляр Firefox, развернутый на соответствующем дисплее. Вуаля!