如何在Selenium中测试“记住我”复选框function

我正在尝试测试登录表单的“记住我”function。 我可以输入用户名和密码,单击复选框,单击“提交”,然后quit()close()浏览器。 但是当我使用new ChromeDriver() (或任何其他WebDriver实现)重新打开浏览器时,测试站点不会记住任何内容,因为在浏览器关闭时会删除所有cookie,并且在重新打开浏览器时无法访问它们。

对于Chrome(配置):

您必须设置user-dir的路径,这将在您第一次登录后保存所有登录信息。 下次再次登录时,将从user-dir获取登录信息。

 System.setProperty("webdriver.chrome.driver", "res/chromedriver.exe"); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); ChromeOptions options = new ChromeOptions(); options.addArguments("test-type"); options.addArguments("start-maximized"); options.addArguments("user-data-dir=D:/temp/"); capabilities.setCapability("chrome.binary","res/chromedriver.exe"); capabilities.setCapability(ChromeOptions.CAPABILITY,options); WebDriver driver = new ChromeDriver(capabilities); 

登录第一次:

 driver.get("https://gmail.com"); //Your login script typing username password, check 'keep me signed in' and so on 

关闭驱动程序(不要退出):

 driver.close(); 

重新初始化驱动程序并导航到该站点。 不应再次要求您输入用户名和密码:

 driver = new ChromeDriver(capabilities); driver.get("http://gmail.com"); 

以上可以使用firefox配置文件为firefox实现。

如果使用持久性cookie实现“记住我”function(我怀疑还有其他方法可以实现它),那么您可以通过以编程方式操作cookie以跨浏览器兼容的方式实际测试该function。 具有到期日期(或Selenium API中的Expiry )的Cookie是持久性Cookie,并在浏览器重新打开时关闭并检索浏览器时存储 。 浏览器关闭时不会存储非持久性cookie。 有了这些信息,我们可以通过编程删除所有非持久性cookie来模拟浏览器关闭时应该发生的事情:

 // Check the "Remember Me" checkbox and login here. Set cookies = webDriver.manage().getCookies(); for (Cookie cookie : cookies) { // Simulate a browser restart by removing all non-persistent cookies. if (cookie.getExpiry() == null) { webDriver.manage().deleteCookie(cookie); } } // Reload the login page. webDriver.get(currentLoginPageURL); // Assert that some text like "You are logged in as..." appears on the page to // indicate that you are still logged in.