这可能是一个重复的问题,但我找不到任何解决方案。最近我发现了一篇相关的帖子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)
答案 0 :(得分:0)
在硒中,您可能需要的只是您要连接的会话的调试器地址。如果您想知道什么是调试器地址,它不过是运行会话的本地主机地址,它看起来像localhost:60003
。现在,每种情况都会有所不同。下面是使用c#代码的过程。
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/");
希望这会有所帮助!!请在评论中告知我是否需要澄清。