Если вы выполняете тест параллельно, тогда нам нужно использовать нестатический метод, чтобы избежать конфликтов. Все вышеперечисленные методы должны быть изменены как нестатические.
Вам необходимо изменить класс прослушивателя, как показано ниже, и он будет правильно предоставлять информацию о драйвере. Нам нужно получить текущий экземпляр класса из ITestResult
Код слушателя:
public class ResultsListener implements ISuiteListener, IInvokedMethodListener {
@Override
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
Object currentClass=testResult.getInstance();
WebDriver driver = ((AppiumSetUp) currentClass).getDriver();
System.out.println("Driver details: " + driver);
}
}
Edit:
Вы можете расширить класс AppiumSetUp во всех необходимых классах (по крайней мере, в классе методов @BeforeTest). Таким образом, вы можете напрямую получить доступ к методу настройки, как показано ниже. Для примера я добавил имя класса как BeforeTestSetup
public class BeforeTestSetup extends AppiumSetUp{
@BeforeTest(alwaysRun = true)
@Parameters({"platform", "udid", "chromeDriverPort", "chromeDriverPath", "deviceName"})
public void setUp(String platform, String udid, String chromeDriverPort, @Optional String chromeDriverPath, String deviceName) throws Exception {
driver = setUp(platform, udid, chromeDriverPort, deviceName);
}
}