如何在 Selenium 中测试 "Remember Me" 复选框功能
How can I test a "Remember Me" checkbox feature in Selenium
我正在尝试测试登录表单的 "Remember Me" 功能。我可以输入用户名和密码,单击复选框,单击提交,然后 quit()
or close()
浏览器。但是当我使用 new ChromeDriver()
(或任何其他 WebDriver
实现)重新打开浏览器时,测试站点不记得任何东西,因为当浏览器关闭时所有 cookie 都被删除并且当浏览器重新打开时无法访问.
对于 Chrome(配置):
您必须将路径设置为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 实现。
如果 "Remember Me" 功能是使用持久性 cookie 实现的(我怀疑是否有任何其他方法可以实现它),那么您实际上可以通过编程操作以跨浏览器兼容的方式测试该功能饼干。具有过期日期(或 Expiry
in the Selenium API) are persistent cookies and are stored when the browser is closed and retrieved when the browser is re-opened)的 cookie。当浏览器关闭时,不会存储非持久性 cookie。有了这些信息,我们可以通过编程方式删除所有非持久性 cookie,模拟浏览器关闭时应该发生的情况:
// Check the "Remember Me" checkbox and login here.
Set<Cookies> 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.
我正在尝试测试登录表单的 "Remember Me" 功能。我可以输入用户名和密码,单击复选框,单击提交,然后 quit()
or close()
浏览器。但是当我使用 new ChromeDriver()
(或任何其他 WebDriver
实现)重新打开浏览器时,测试站点不记得任何东西,因为当浏览器关闭时所有 cookie 都被删除并且当浏览器重新打开时无法访问.
对于 Chrome(配置):
您必须将路径设置为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 实现。
如果 "Remember Me" 功能是使用持久性 cookie 实现的(我怀疑是否有任何其他方法可以实现它),那么您实际上可以通过编程操作以跨浏览器兼容的方式测试该功能饼干。具有过期日期(或 Expiry
in the Selenium API) are persistent cookies and are stored when the browser is closed and retrieved when the browser is re-opened)的 cookie。当浏览器关闭时,不会存储非持久性 cookie。有了这些信息,我们可以通过编程方式删除所有非持久性 cookie,模拟浏览器关闭时应该发生的情况:
// Check the "Remember Me" checkbox and login here.
Set<Cookies> 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.