WebDriver Java:将现有的webdriver浏览器会话重新连接到驱动程序实例

我正在寻找一种方法将现有的webdriver浏览器会话重新连接到驱动程序实例,以便我可以再次控制浏览器。

到目前为止,我已尝试过以下方法:
I. ==========================================

参考: https : //stackoverflow.com/a/38827934/2285470

浏览器: Firefox v.51.01 / Chrome v.56.0.2924.87

司机: geckodriver v.1.14 / chromedriver v.2.27

解决方案:
1.创建扩展RemoteWebDriver的自定义类

public class RemoteDriver extends RemoteWebDriver { public RemoteDriver(URL url, String sessionId) { super(); setSessionId(sessionId); setCommandExecutor(new HttpCommandExecutor(url) { @Override public Response execute(Command command) throws IOException { if (command.getName() != "newSession") { return super.execute(command); } return super.execute(new Command(getSessionId(), "getCapabilities")); } }); startSession(new DesiredCapabilities()); } } 
  1. 启动一个新的firefox实例
  2. 获取会话ID并将其存储在某处(属性文件)
  3. 停止测试,打开浏览器
  4. 使用以下命令调用扩展RemoteWebDriver的自定义类:

    RemoteDriver cdriver = new RemoteDriver(new URL("http://localhost:7055/hub"),"my-session-id");

结果: org.openqa.selenium.WebDriverException: No command or response codec has been defined. Unable to proceed org.openqa.selenium.WebDriverException: No command or response codec has been defined. Unable to proceedreturn super.execute(new Command(getSessionId(), "getCapabilities"));

II。 ==========================================
参考: https //groups.google.com/forum/#!topic/selenium- developers/ 1LygDvlQ3H4

浏览器: Firefox v.51.01 / Chrome v.56.0.2924.87

司机: geckodriver v.1.14 / chromedriver v.2.27

解决方案:
1.创建扩展RemoteWebDriver的自定义类

 public class RemoteDriver extends RemoteWebDriver { @Override protected void startSession(Capabilities desiredCapabilities) { String sid = getSessionIdFromPropertyFile(); if (sid != null) { setSessionId(sid); try { super.startSession(desiredCapabilities); } catch (WebDriverException e) { // session is not valid sid = null; } } if (sid == null) { super.startSession(desiredCapabilities); saveSessionIdToPropertyFile(getSessionId().toString()); } } } 
  1. 启动一个新的firefox实例
  2. 获取会话ID并将其存储在某处(属性文件)
  3. 停止测试,打开浏览器
  4. 使用以下命令调用扩展RemoteWebDriver的自定义类:

    RemoteDriver cdriver = new RemoteDriver(); cdriver.startSession(DesiredCapabilities.firefox()); cdriver.get("https://www.google.com");

结果: org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

似乎其他人可以让它工作,但经过几个小时的尝试后,我仍然无法做到这一点。

我正在使用selenium-java 3.1.0版

提前致谢。