Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Resolved] Проблема использования WebDriverFactory при запуске RemoteWebDriver


(Luisa S) #1

При запуске тестов локально, чтобы тесты проходили без перезапуска браузера, использовалась WebDriverFactory. и все правильно работало.

@Before
public void startBrowser() {
		FirefoxProfile profile = new FirefoxProfile();
		profile.setEnableNativeEvents(true);
		DesiredCapabilities capability = DesiredCapabilities.firefox();
		capability.setCapability(FirefoxDriver.PROFILE, profile);
		driver = WebDriverFactory.getDriver(capability);
		driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

}

@AfterSuite
public void stopAllBrowsers() {
	WebDriverFactory.dismissAll();
}

Теперь есть необходимость запускать тесты удаленно. И тут у меня возник вопрос, как правильно это устроить. При таких аннотациях Before и After каждый тест открывается в новом окне, причем после завершения теста окна не закрываются, в результате там целый каскад из открытых окон.

@Before
public void startBrowser() throws Exception {
		FirefoxProfile profile = new FirefoxProfile();
		profile.setEnableNativeEvents(false);
		DesiredCapabilities capability = DesiredCapabilities.firefox();
		capability.setBrowserName("firefox");
		capability.setCapability(FirefoxDriver.PROFILE, profile);
		String hostURL = "http://170.702.257.588:4444/wd/hub";
		driver = new RemoteWebDriver(new URL(hostURL), capability);
		driver = WebDriverFactory.getDriver(hostURL, capability);
}

@AfterSuite
public void stopAllBrowsers() {
	WebDriverFactory.dismissAll();
}

Selenium WebDriver, JUnit


(Sergey Korol) #2

Логично, что у вас все окна останутся висеть во время выполнения. Вы ведь вызываете dismissAll() в AfterSuite, а инстанс драйвера поднимаете в Before. Другой вопрос - почему они в конце не закрываются? Тут надо смотреть, корректно ли вы помещаете драйвер в контейнер фабрики.


(Luisa S) #3

Получилось решить проблему. Удалила RemoteWebDriver, а тесты все равно на удаленной машине запускаются.

@Before
public void startBrowser() throws Exception {
		FirefoxProfile profile = new FirefoxProfile();
		profile.setEnableNativeEvents(false);
		DesiredCapabilities capability = DesiredCapabilities.firefox();
		capability.setBrowserName("firefox");
		capability.setCapability(FirefoxDriver.PROFILE, profile);
		String hostURL = "http://170.702.257.588:4444/wd/hub";
		driver = WebDriverFactory.getDriver(hostURL, capability);

}


(Sergey Korol) #4

Потому что в реализацию фабрики уже вшит RemoteWebDriver, т.е. вы создавали лишние инстансы.