我有一个石墨烯页面对象。
@Location("/page")
public class MyPage {
@Drone
private WebDriver driver;
// page methods using the driver
}
还有一个使用页面对象的测试类。
@RunWith(Arquillian.class)
public class MyTest {
@Test
public void test(@InitialPage MyPage page) {
// use page & assert stuff
}
@Test
public void anotherTest(@InitialPage MyPage page) {
// use page & assert stuff even harder
}
}
现在,我决定 MyTest 应该使用方法范围的 Drone 实例。所以我加...
public class MyTest {
@Drone
@MethodLifecycle
private WebDriver driver;
现在,当我运行测试时,我得到了两个浏览器,所有测试都以错误结束。显然,这种生命周期管理也被视为限定词。
是的,添加@MethodLifecycle
MyPage 也有帮助。但这不是一个解决方案——一个页面不应该关心这个,并且应该在任何 WebDriver 中工作,无论其范围如何。只有测试拥有管理无人机生命周期的知识。一个页面应该只使用它被调用的任何上下文。我怎样才能做到这一点?