1

我的应用程序中有一个错误,其中注销不起作用。我需要在使用 WebDriver 的 Java 自动化中解决这个问题。解决方法是关闭浏览器并重新打开它并打开登录页面。

为了自动化这个解决方法,这是我尝试过的:

browserDriver.quit();            
browserDriver = new FirefoxDriver(capabilities);
browserDriver.get(loginPageURL);

这将返回一个新的会话 ID。有没有办法保留以前的会话 ID 并将其设置回来。我可以使用获取上一个会话 ID

((RemoteWebDriver)browserDriver).getSessionId();

我还尝试使用以下代码删除当前域的所有 cookie,但用户仍处于登录状态。

browserDriver.manage().deleteAllCookies();
browserDriver.navigate().refresh();
browserDriver.get(loginPageURL);

感谢您对此的任何帮助。

4

2 回答 2

1

据我所知,在驱动程序上调用 quit() 方法后,它不会保留以前的会话 ID。

无论如何,尝试通过禁用缓存来使用特定的 firefox 配置文件启动浏览器。

FirefoxProfile profile = new ProfilesIni().getProfile(profilePath);
profile.setPreference("browser.cache.disk.enable", false);
profile.setPreference("browser.cache.memory.enable", false);
profile.setPreference("browser.cache.offline.enable", false);
profile.setPreference("network.http.use-cache", false);

DesiredCapabilities dc = DesiredCapabilities.firefox(); 
dc.setCapability(FirefoxDriver.PROFILE, profile); 

driver = new FirefoxDriver(dc);
driver.get(url);

Firefox 配置文件创建 ==> https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

Edit-I 更改该配置文件中的以下设置

在“about:config”中,您可以将“Browser.sessionstore.enabled”设置为 false,在这种情况下,firefox 将不会在关闭后恢复您的浏览会话。

于 2014-02-20T14:49:36.123 回答
0

当您使用

driver.quit(); 

或者

driver.close(); 

Selenium 总是启动一个新会话。这意味着它总是将您定向到“登录”页面。只需使用下面的代码,无需设置功能。

browserDriver.quit();                                    
browserDriver.get(loginPageURL); 

您将看到登录页面。

于 2014-09-17T06:32:41.553 回答