我们通过在测试之间共享 selenium 实例解决了这个问题。然后 selenium 在整个测试运行期间只尝试窃取一次焦点,这还不错。
如果您使用 JUnit 编写 Selenium 脚本,则可以使用 SpringSpringJUnit4ClassRunner
将 selenium 实例作为 bean 注入。
为 Spring 定义一个测试上下文selenium.xml
(如果您不熟悉如何设置 Spring XML 配置文件,请搜索它)并包含一个 selenium 实例:
<bean class="com.thoughtworks.selenium.DefaultSelenium" name="selenium">
<constructor-arg index="0">
<value>localhost</value>
</constructor-arg>
<constructor-arg index="1">
<value>4444</value>
</constructor-arg>
<constructor-arg index="2">
<value>*firefox</value>
</constructor-arg>
<constructor-arg index="3">
<value>http://localhost:8080/webapp/</value>
</constructor-arg>
</bean>
然后在您的测试中,注入 selenium 实例而不是new
'ing 它:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:selenium.xml")
public class WebappIT {
@Resource
private Selenium selenium;
... test code ...
}
我已经稍微简化了这一点,在我们的实际代码中,我们将 selenium 实例包装在提供程序类中,以便我们只能调用 selenium.start() 一次。