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>

我在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文件实现并行测试执行..

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

    DesiredCapabilities和创建MarionetteDriver对象
  1. 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));
}

试试这个,让我知道

最新更新