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

Pan*_*jit 8 firefox selenium webdriver selenium-chromedriver

这可能是一个重复的问题,但我找不到任何解决方案.最近我发现了一个相关的帖子,将Selenium WebDriver连接到现有的浏览器会话,但人们建议我提出一个新问题.

如果有人试图将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");
Run Code Online (Sandbox Code Playgroud)

复制的RemoteWebDriver源代码和已更改的功能从私有到受保护.

protected Capabilities capabilities; 
Run Code Online (Sandbox Code Playgroud)

创建一个新类RemoteDriverEx扩展复制的RemoteWebDriver类将原始驱动程序发出的NEW_SESSION命令更改为GET_CURRENT_URL

Response response = execute(DriverCommand.GET_CURRENT_URL, Collections.EMPTY_MAP);
Run Code Online (Sandbox Code Playgroud)

然后开始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)
Run Code Online (Sandbox Code Playgroud)

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

Kru*_*tel 5

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

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

在此处输入图片说明

  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/");

希望这可以帮助!!如果需要澄清,请在评论中告诉我。

  • 因为没有人回答这个问题,我想这可能会帮助那些知道分享正确答案没有坏处的人 (12认同)