WebDriver:如何将 MarionetteDriver 转换为 ThreadLocal<WebDriver> 以便在 TestNG 的并行测试中使用

WebDriver: How to Convert MarionetteDriver to ThreadLocal<WebDriver> for usage in Parallel Test in 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 之上进行了扩展。

Getting Error @ Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities); and Driver = new <ThreadLocal<WebDriver>>ChromeDriver(); lines as Type mismatch: cannot convert from MarionetteDriver to ThreadLocal<WebDriver>

我在 Ubuntu 14.04 Os 和 Selenium version selenium-server-standalone-2.53.0

上使用 Chrome Version 52.0.2743.116 (64-bit)FireFox Version 48.0 版本的浏览器

想通过testng.xml文件实现并行测试执行..

任何帮助将不胜感激..

您需要在代码中进行以下更改才能编译。

  1. 使用您的 DesiredCapabilities
  2. 创建 MarionetteDriver 对象
  3. 使用 set 方法在 ThreadLocal 对象中设置此 Driver 对象。

如下所示:

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));
}

试试这个让我知道