是否有办法实现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
文件实现并行测试执行..
您需要在代码中进行以下更改以使其能够编译。
- 用
- 在
ThreadLocal
对象中使用它的Set方法设置这个驱动对象。
DesiredCapabilities
和创建MarionetteDriver对象如下所示:
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));
}
试试这个,让我知道