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 ответ

Решение

Вам нужно внести следующие изменения в ваш код, чтобы он компилировался.

  1. Создайте объект MarionetteDriver с вашим DesiredCapabilities а также
  2. Установите этот объект драйвера внутри 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));
}

Попробуй это и дай мне знать

Другие вопросы по тегам