如何将Selenium Webdriver连接到现有的Firefox / Chrome浏览器会话?

时间:2017-05-31 06:21:19

标签: selenium firefox webdriver selenium-chromedriver

这可能是一个重复的问题,但我找不到任何解决方案。最近我发现了一篇相关的帖子Connecting Selenium WebDriver to an existing browser session,但人们建议我提出一个新问题。

如果有人试图将selenium webdriver连接到早先由selenium产生的浏览器会话并且已成功完成,请告知我们。

我可以找到一些建议来尝试使用firefox和selenium 2.X版本。但这些建议不适用于selenium 3.X,并且没有Chrome浏览器的解决方案。

我已经尝试了所有关于Selenium 25.3,firefox v 46的建议并且它有效。但对于带Chrome驱动程序的Chrome,我无法使其正常工作。

编辑:

以下是我尝试的代码:

启动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源代码和已更改的功能从私有复制到受保护。

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)

完整代码共享@ https://drive.google.com/open?id=0Bz2XxuQQc24KdHVqR3BPaXowUnM

1 个答案:

答案 0 :(得分:0)

在硒中,您可能需要的只是您要连接的会话的调试器地址。如果您想知道什么是调试器地址,它不过是运行会话的本地主机地址,它看起来像localhost:60003。现在,每种情况都会有所不同。下面是使用c#代码的过程。

  1. 获取调试器要稍后使用调试模式连接的浏览器地址,如下面的快照所示。浏览器启动后调试驱动程序以获取值

enter image description here

  1. 现在,请保持该浏览器运行,并使用以下代码重新连接同一浏览器。

ChromeOptions option = new ChromeOptions();

option.DebuggerAddress="localhost:60422";// we need to add this chrome option to connect the required session

driver = new ChromeDriver(option);

driver.Navigate().GoToUrl("https://www.google.com/");

希望这会有所帮助!!请在评论中告知我是否需要澄清。