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
文件实现并行测试执行..
任何帮助将不胜感激..
您需要在代码中进行以下更改才能编译。
- 使用您的
DesiredCapabilities
和 创建 MarionetteDriver 对象
- 使用 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));
}
试试这个让我知道
有什么方法可以实现 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
文件实现并行测试执行..
任何帮助将不胜感激..
您需要在代码中进行以下更改才能编译。
- 使用您的
DesiredCapabilities
和 创建 MarionetteDriver 对象
- 使用 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));
}
试试这个让我知道