Я пытаюсь настроить мой веб-драйвер так, чтобы он мог выполнять тесты параллельно с листом xml, это так и происходит, но иногда я обнаруживаю, что он открывает пустые хромированные окна «data»
Я исследовал другие вопросы, и, похоже, все ответы говорят о том, что веб-драйвер должен быть новым threadlocal<RemoteWebDriver>
, что я уже делаю.
Это файл WebDriverSetup.java
, который я использую:
public class WebDriverSetup {
private static ThreadLocal<RemoteWebDriver> threadDriver = null;
public WebDriver driver(){
return threadDriver.get();
}
@BeforeMethod
public void setUp() throws MalformedURLException {
//Set up the path to the chromedriver so that the user will not have problems if they don't have the system path variable set up.
System.setProperty("webdriver.chrome.driver", TestExecutor.projectDirectory + "/chromedriver.exe");
//Set the hub URL
String seleniumUrl = "http://" + TestExecutor.hubUrl + "/wd/hub";
//Turn off logging because as of selenium-standalone-server-3.0.1, there
//is an "INFO" message that appears in console that could be mistaken for
//an error message.
Logger.getLogger("org.openqa.selenium.remote").setLevel(Level.OFF);
//threadDriver needs to be on its own local thread
threadDriver = new ThreadLocal<RemoteWebDriver>();
//Set chromeoptions so they open headless on the VM, but the VM imagines the
//tests as if chrome was running full screen on a desktop session.
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--window-size=1920,1080");
//Apply the options to the chromedriver session.
URL seleniumHubURL = new URL(seleniumUrl);
threadDriver.set(new RemoteWebDriver(seleniumHubURL, options));
}
}
и вот как я это называю из своего теста:
public class Demo_1_Filter_Users_By_Firstname extends TestBase.ClassGlobals
{
private WebDriverSetup webDriverSetup;
private EventFiringWebDriver driver;
private File logFile;
@Test
public void main(){
//The main method
driver.get("web_application_url");
}
@BeforeMethod
public void testSetup() throws IOException {
//Setup the webdriver
webDriverSetup = new WebDriverSetup();
driver = new EventFiringWebDriver( webDriverSetup.driver() );
//Set up an eventhandler on the event so that all the logging functions work
EventHandler handler = new EventHandler();
driver.register( handler );
//Setup the logfile
logFile = commonMethods.newLogFile();
//Log
commonMethods.log(logFile, "------TEST STARTED------");
}
@AfterMethod
public void testClosure(){
//Close webdriver session, log test done etc
}
}
Ошибка, с которой я сталкиваюсь, не возникает каждый раз, и я не понимаю, почему окно висит на data;
, хотя первая строка моего основного метода заключается в создании нового сеанса веб-драйвера, а затем используя этот сеанс, откройте веб-приложение через driver.get()
Я использую chromedriver версии 2.41