WebDriver: как преобразовать MarionetteDriver в ThreadLocal<WebDriver> для использования в параллельном тесте в TestNG
Есть ли способы добиться приведения типа локального экземпляра WebDriver
через ThreadLocal<WebDriver>
в MarionetteDriver
??? Мой код выглядит так
public class Base_Class
{
protected ThreadLocal<WebDriver> Driver = null;
@BeforeMethod
@Parameters("BrowserName")
public void setUp(@Optional("Firefox") String BrowserName) throws MalformedURLException
{
Driver = new ThreadLocal<WebDriver>();
if(BrowserName.equalsIgnoreCase("FireFox"))
{
System.setProperty("webdriver.gecko.driver", "..//BrowserDrivers//wires");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities);
}
else if(BrowserName.equalsIgnoreCase("Chrome"))
{
System.setProperty("webdriver.chrome.driver", "..//BrowserDrivers//chromedriver");
Driver = new <ThreadLocal<WebDriver>>ChromeDriver();
}
}
public WebDriver getDriver()
{
return Driver.get();
}
@AfterMethod
public void closeBrowser()
{
getDriver().quit();
}
}
И все тестовые примеры определены в отдельных классах, что расширяет это выше Base_Class.
Ошибка получения @
Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities); and Driver = new <ThreadLocal<WebDriver>>ChromeDriver(); lines as Type mismatch: cannot convert from MarionetteDriver to ThreadLocal<WebDriver>
я использую Chrome Version 52.0.2743.116 (64-bit)
а также FireFox Version 48.0
версия браузера на Ubuntu 14.04
Os и Selenium version selenium-server-standalone-2.53.0
Хотел добиться параллельного выполнения теста через testng.xml
файл..
Любая помощь будет высоко оценен..
1 ответ
Вам нужно внести следующие изменения в ваш код, чтобы он компилировался.
- Создайте объект MarionetteDriver с вашим
DesiredCapabilities
а также - Установите этот объект драйвера внутри
ThreadLocal
объект, используя его метод set.
Как ниже:
if(BrowserName.equalsIgnoreCase("FireFox")) {
System.setProperty("webdriver.gecko.driver", "..//BrowserDrivers//wires");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
// Commented out below line from your code
//Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities);
Driver.set(new MarionetteDriver(capabilities));
}
Попробуй это и дай мне знать