【问题标题】:How selenium webdriver is maintaining separate session for each run?selenium webdriver 如何为每次运行维护单独的会话?
【发布时间】:2013-05-12 11:13:36
【问题描述】:

例如在gmail登录中,当我们考虑登录测试时,第一次手动执行时,我们将获得登录页面,从下一次开始,我们将直接进入收件箱页面。

如果你尝试在 webdriver 中做同样的事情(运行登录测试两次),在所有这些尝试中,我们将获得登录页面,因为我们之前没有从这台机器登录。关于 cookie 或会话维护会话的幕后发生了什么?

【问题讨论】:

    标签: java session selenium-webdriver session-cookies


    【解决方案1】:

    这是来自 selenium 文档的描述和代码 sn-p 添加或删除 cookie:

    在我们离开这些后续步骤之前,您可能会对 了解如何使用 cookie。首先,你需要在 cookie 将对其有效的域。如果您尝试预设 在您开始与网站交互之前的 cookie,并且您的主页是 large / 需要一段时间来加载一个替代方法是找到一个较小的页面 在网站上,通常 404 页面很小 (http://example.com/some404page)

    // Go to the correct domain
    driver.get("http://www.example.com");
    
    // Now set the cookie. This one's valid for the entire domain
    Cookie cookie = new Cookie("key", "value");
    driver.manage().addCookie(cookie);
    
    // And now output all the available cookies for the current URL
    Set<Cookie> allCookies = driver.manage().getCookies();
    for (Cookie loadedCookie : allCookies) {
        System.out.println(String.format("%s -> %s", loadedCookie.getName(), loadedCookie.getValue()));
    }
    
    // You can delete cookies in 3 ways
    // By name
    driver.manage().deleteCookieNamed("CookieName");
    // By Cookie
    driver.manage().deleteCookie(loadedCookie);
    // Or all of them
    driver.manage().deleteAllCookies();
    

    【讨论】:

    • 感谢您的回复,在这里我想了解一下,selenium 如何在没有明确管理 cookie 的情况下执行所有这些活动?例如,每次我们登录 gmail 时,我们都会得到一个登录页面,而不是直接登录帐户。它如何管理(删除)以前生成的会话?
    • 您可以配置 selenium 是否使用 cookie。这是它的 sn-p:FirefoxProfile profile=new FirefoxProfile(); profile.setPreference("network.cookie.cookieBehavior",2);检查此链接以获取 network.cookie.cookieBehavior 的不同值:kb.mozillazine.org/Network.cookie.cookieBehavior
    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2017-03-07
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多