Java Firefox:很抱歉,我们无法取回您的页面

Java Firefox:很抱歉,我们无法取回您的页面,java,firefox,cmd,crash,Java,Firefox,Cmd,Crash,当我通过CMD关闭FF时: Process process = Runtime.getRuntime().exec("taskkill /F /T /PID " + PID); 然后重新打开FF,我得到以下信息: 抱歉,我们无法取回您的页面。。。我们正在吃饭 恢复上次会话时遇到问题。选择要尝试的还原会话 再次 我看到了恢复会话或启动新会话的选项 我的问题是:这是否意味着FF无法保存来自上一个会话的cookie或任何其他持久性数据,或者仅仅意味着FF将从上一个会话恢复页面?据

当我通过CMD关闭FF时:

Process process = Runtime.getRuntime().exec("taskkill /F /T /PID " + PID);
然后重新打开FF,我得到以下信息:

抱歉,我们无法取回您的页面。。。我们正在吃饭 恢复上次会话时遇到问题。选择要尝试的还原会话 再次

我看到了恢复会话或启动新会话的选项


我的问题是:这是否意味着FF无法保存来自上一个会话的cookie或任何其他持久性数据,或者仅仅意味着FF将从上一个会话恢复页面?据我所知,cookies是保留的,因为当我进入选项->隐私和安全->管理数据时,我看到了上一个会话中的cookies。用另一种方式表达我的问题,如果我选择不恢复上一个会话,那么我在上一个会话中访问的网站是否有任何方式告诉我没有恢复上一个会话,即,基于cookie数据或其他一些持久数据?

您在恢复会话时已经检查了页面数据-启动新会话时是否检查了页面数据!?请删除taskkill选项/F,该选项会强制使用指定的进程标识符残酷地杀死firefox进程及其所有子进程,因为操作系统使用了选项/T,而不会让firefox正常终止自身并保存所有未保存的数据。这是Firefox下一次启动时的情况,就像它以前崩溃过一样SystemRoot%\System32\taskkill.exe在不使用选项/F时向Firefox发送消息,Firefox会在该选项上优雅地终止自己。我不是Firefox程序员,因此不知道他们做了什么来防止Firefox崩溃或被操作系统杀死时完全丢失数据,例如,在更新*.sqlite数据库文件(如cookies.sqlite或places.sqlite)时。这可能是因为Firefox上的cookie已经保存了很长一段时间,或者在收到cookie数据后很长一段时间就被删除了,但我不确定这一点。操作系统关闭所有套接字TCPm UDP套接字以及所有文件。网站通常无法找出另一端关闭套接字的原因。如果在Firefox写入cookies.sqlite时操作系统杀死Firefox,则整个数据库可能会损坏,导致无法在下次启动时从该文件加载任何数据。我不知道Firefox是否采取了预防措施,以避免在数据保存过程中完全丢失数据,例如,在为写操作打开真实数据库文件之前创建现有数据库文件的备份,以便能够在下一次启动时使用备份,在真实数据库文件的写操作过程中被杀死或崩溃。我不使用Selenium和WebDriver。因此,我不禁要问,由于死锁、无CPU核心使用或无休止的循环、大量CPU核心使用,WebDriver没有响应,可以做些什么。好吧,应该可以优雅地终止Firefox,只杀死WebDriver及其子进程。或者,如果可能的话,Geckdriver的实例也会被taskkill终止,这可能会导致WebDriver自身也会被优雅地终止。但我真的不能建议完全不使用这些应用程序。