这可能是一个重复的问题,但我找不到任何解决方案。最近我发现了一个相关的帖子Connecting Selenium WebDriver to an existing browser session但人们建议我提出一个新的问题。
如果有人尝试将selenium webdriver连接到先前由selenium本身产生的现有浏览器会话,并成功实现,请让我知道。
我找到了一些关于firefox和selenium 2.X版本尝试的建议。但这些建议对于selenium 3.X不起作用,并且没有chrome浏览器的解决方案。
我已经尝试了所有针对Selenium 25.3,Firefox v46的建议,并且它可以工作。但是对于Chrome和Chrome Driver,我无法使其工作。
编辑:
这是我尝试过的代码:
开始Firefox驱动程序
System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"/StartFirefoxSession_lib/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
复制了RemoteWebDriver源代码并将capabilities从private更改为protected。
protected Capabilities capabilities;
创建了一个名为RemoteDriverEx的新类,扩展了复制的RemoteWebDriver类。将原始驱动程序发出的NEW_SESSION命令更改为GET_CURRENT_URL。
Response response = execute(DriverCommand.GET_CURRENT_URL, Collections.EMPTY_MAP);
然后创建了一个JUnit测试来验证
但我被异常困扰了
org.openqa.selenium.WebDriverException: No command or response codec has been defined. Unable to proceed
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'WPANDBW7HYD', ip: '192.168.56.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_74'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:154)