Java 如何在webdriver中使用已打开的浏览器活动会话

Java 如何在webdriver中使用已打开的浏览器活动会话,java,selenium,selenium-webdriver,session-cookies,browser-cache,Java,Selenium,Selenium Webdriver,Session Cookies,Browser Cache,有没有办法将会话继承到webdriver中?我做了很多搜索,知道selenium不支持连接到已经打开的浏览器。如果我可以的话会更好。但现在我考虑了一些解决办法。实际上,我的应用程序以一个快捷方式文件开始,该文件启动firefox,点击应用程序URL,登录,转到仪表板,留给用户使用。在这种情况下,我不需要在打开的浏览器上工作,如果我可以只获取活动会话并在使用selenium打开webdriver时进行设置,那么我的目的就解决了。甚至它也可能是手动的。由于selenium总是打开incognito

有没有办法将会话继承到webdriver中?我做了很多搜索,知道selenium不支持连接到已经打开的浏览器。如果我可以的话会更好。但现在我考虑了一些解决办法。实际上,我的应用程序以一个快捷方式文件开始,该文件启动firefox,点击应用程序URL,登录,转到仪表板,留给用户使用。在这种情况下,我不需要在打开的浏览器上工作,如果我可以只获取活动会话并在使用selenium打开webdriver时进行设置,那么我的目的就解决了。甚至它也可能是手动的。由于selenium总是打开incognito webdriver窗口,我无法在那里获得该会话。有人能告诉我如何从已经打开的浏览器中获取该会话并在webdriver中使用它吗?任何帮助或建议都将不胜感激。

Selenium只是一个使用json wire协议接受http请求的服务器。 这是一个http API

json wire协议中的每个调用都会向请求添加一个sessionId参数

因此,如果您使用驱动程序启动会话,您可以保存该会话ID,然后实例化一个新的驱动程序对象,并为其提供以前的sessionId


如果selenium服务器仍在运行该会话,则它不知道在发送请求时使用的是哪个驱动程序对象。可以让100名司机同时使用相同的sessionID!:D

您可以考虑序列化您的webdriver实例以重新使用它。不,不是这样的。webdriver未激活上一个会话。它是由不同的工具完成的。它启动浏览器,登录并留给用户。假设我正在手动执行相同的操作。手动登录完成后,我将初始化driver=new FirefoxDriver(),并希望在webdriver中设置已打开的会话,以便如果我在webdriver中点击URL,它不会显示登录页面并直接启动主页。这就是我想要的。我想你可以尝试使用cookies@olyv-我想这就是我应该如何添加cookie的方法。但在这种情况下,我有两个问题。1.在添加cookie之前,我需要从打开的浏览器中获取相同的cookie,以及如何做到这一点?2.这真的是通过添加cookie实现的吗???我认为会议也涉及到图片。仅仅添加cookie并不能解决这个问题。如果我错了,请纠正我。@souvik 1。您可以在FireFox->Settings->Privacy->remove Individual cookie中查看cookie,从中获得cookie的价值。2.至少您可以尝试:),让我再建议一个重用浏览器实例的选项