У меня возникают проблемы при попытке запустить Selenium Web-драйвер определенным образом c, у меня в моей инфраструктуре настроен TestNG + Selenium Web driver, и я хотел бы выполнить sh - запустить два Комплекты, которые я настроил в файлах TestNG. xml ниже:
TestNG. xml
<suite>
<suite-files>
<suite-file path="src/testNG/suites/UserSignsOn.xml" />
<suite-file path="src/testNG/suites/PreSetup.xml" />
</suite-files>
</suite>
PreSetup. xml
<suite name="Pre Setup">
<test name="pre setup suite">
<classes>
<class name="Tests.PreSetup" />
</classes>
</test>
</suite>
UserSignsOn. xml
<suite name="User Signs On">
<test name="Get the Web Application">
<classes>
<class name="Tests.LoginPageTest" />
</classes>
</test>
</suite>
Мои тестовые файлы выглядят так:
LoginPageTest.class
public class LoginPageTest extends BaseTest {
@Test
@Description("Login to the web application")
public void signInTheWebApplicationLocalHost(){ // some steps here }
}
PreSetup.class
public class PreSetup extends BaseTest {
@Test
@Description("Pre setup")
public void preSetupSteps(){ // some steps here }
}
Как вы видите, мои тестовые файлы расширяют класс, а именно:
BaseTest.class
public class BaseTest {
protected EnvironmentManager environmentManager;
@BeforeTest
public void testSetup() {
environmentManager = EnvironmentManager.getInstance();
if(environmentManager.getDriver() == null){
// Here I am set up the driver!!!
environmentManager.initWebdriver();
environmentManager.startWebApplication();
}
}
@BeforeMethod
public void testName(ITestResult result){ // perform some actions }
@AfterMethod
public void status(ITestResult result){ // perform some actions }
@AfterTest // Here I am shutting down the driver
public void tearDown() { environmentManager.shutdownDriver(); }
}
BaseTest.class вызывает EnvironmentManager.class , который является одноэлементным классом
Имеет следующий код:
public class EnvironmentManager {
private static EnvironmentManager instance = null;
private WebDriver driver = null;
private String url = "www.google.com";
private EnvironmentManager(){}
// Public Methods
public void initWebdriver() {
if(driver == null){ driver = new ChromeDriver(); }
}
public void startWebApplication(){ driver.get(url); }
// Singleton method
public static EnvironmentManager getInstance() {
if (instance == null) instance = new EnvironmentManager();
return instance;
}
public void shutdownDriver(){
driver.quit();
driver = null;
}
public WebDriver getDriver(){ return driver; }
}
Проблема возникает после запуска второго теста «PreSetup», в консоли я получил ошибку:
Session ID is null. Using WebDriver after calling quit()?
Я заметил, что в первом тесте Сессия драйвера:
ChromeDriver: chrome on MAC (0ff799fbfd14fc275b3b45c414765b15)
И во втором тесте другой:
ChromeDriver: chrome on MAC (09c6c47344756fe2979ee8a84094b1e3)
Любая помощь приветствуется:)