【发布时间】:2019-10-11 04:00:29
【问题描述】:
存储在我的 DriverFactory 中的当前设置:
private static ThreadLocal<WebDriver> webDriver = new ThreadLocal<WebDriver>();
return webDriver.get();
目前以下方法似乎失败了:
public void loadUrl(String url) {
try {
getDriver().get(url);
System.out.println("Successfully navigated to URL: " + url);
} catch (Exception e) {
System.out.println(e.getStackTrace());
Assert.fail("Unable to navigate to URL: " + url + ", Exception: " + e.getMessage());
}
}
设置驱动方法:
public final void setDriver(String browser) throws Exception {
String remoteHubUrl = "http://xxx.xxxx.xxx.xxx:4444/wd/hub/";
try {
switch (setBrowserType(browser)) {
case "grid":
DesiredCapabilities capabilities =new DesiredCapabilities();
capabilities.setBrowserName("chrome");
ChromeOptions op = new ChromeOptions();
op.merge(capabilities);
webDriver.set(new RemoteWebDriver(new URL(remoteHubUrl), op));
break;
}
}
异常消息:
Exception: null
使用旧版本的chromedriver似乎没有问题,有什么想法吗?
用于在执行测试之前初始化驱动程序的基本步骤:
@Before
public void setupHook() {
setDriver("grid");
}
【问题讨论】:
-
getDriver()是做什么的?何时调用setDriver(<browser>)?您是否将值“grid”传递给 setDriver? -
这是一个工作实现,可能是一个有用的参考:github.com/Ardesco/Selenium-Maven-Template
-
嘿@Ardesco 刚刚更新了我的问题,很奇怪不知道为什么该逻辑适用于旧版本的 webdriver。
-
您能否提供完整的堆栈跟踪,而不仅仅是
Exception: null? -
@Ardesco 似乎 null 是唯一的例外,即使在尝试打印堆栈跟踪时也是如此。
标签: java selenium selenium-webdriver selenium-chromedriver thread-local