我正在使用页面对象模式。我已经在Watcher类中实现了TestWatcher接口,以处理测试用例结果。为了获得通过/失败测试用例的屏幕截图,我需要一个WebDriver实例,可用driver。如果我将驱动程序声明为静态驱动程序,则它可以在顺序模式下很好地工作,但是在打开并行执行时失败。看起来Junit对单个类中的所有测试方法都使用单个线程。如果我没有将驱动程序声明为静态,则TestWatcher方法中的ExecutionContext对象不会在测试方法失败的地方给我类名称。我只能在定义@Test的地方获取类名。请提出是否有办法实现这一目标,以及我是否在这里有所遗漏。谢谢。
我尝试将驱动程序声明为静态和非静态。
答案 0 :(得分:0)
我删除了静态WebDriver声明和ale,也从ExtensionContext获取了WebDriver的实例。
Field field = context.getRequiredTestInstance().getClass().getDeclaredField("driver");
field.setAccessible(true);
WebDriver driver = (WebDriver) field.get(context.getRequiredTestInstance());