【问题标题】:How to send cookies with selenium webdriver?如何使用 selenium webdriver 发送 cookie?
【发布时间】:2012-05-07 14:18:30
【问题描述】:

每次我运行测试时,第一步都是登录,然后我就进入了想要的页面。如果运行这个测试经常登录操作需要很多时间。

如何通过登录操作?

使用 Chrome 和 Firefox 驱动程序,java 语言。

【问题讨论】:

    标签: java selenium webdriver


    【解决方案1】:

    使用 Java API 创建 cookie,如下所示:

    Cookie ck = new Cookie("name", "value");
    driver.manage().addCookie(ck);
    

    使用Python API 创建 cookie,如下所示:

    driver.add_cookie({'name': 'foo', 'value': 'bar'})
    

    【讨论】:

    • 我个人收到 org.openqa.selenium.UnableToSetCookieException 无法设置 Cookie:尚未加载任何 URL
    • 在设置 cookie 之前,您首先必须导航到某个页面(我知道,这很奇怪)
    • 这也适用于仅 HTTP cookie 吗?如果没有,你能帮帮我吗..
    【解决方案2】:

    除了namevalue之外,还需要在Cookie上设置更详细的信息,你可以使用:

    Cookie cookie = new Cookie.Builder("name", "value")
        .domain(".mydomain.com")
        .expiresOn(new Date(2015, 10, 28))
        .isHttpOnly(true)
        .isSecure(false)
        .path("/mypath")
        .build();
    
    driver.manage().addCookie(cookie);
    

    【讨论】:

      【解决方案3】:
      driver.manage().addCookie();
      

      manage()

      The Options interface with Cookies

      以及Selenium对Cookie的实现

      【讨论】:

      • 我认为Java代码可能如下: Cookie ck = new Cookie("name", "value"); driver.manage().addCookie(ck);
      • 链接都失效了
      • 这就是为什么仅仅提供链接并不是最好的答案,而在 SO 答案中引用相关部分是重要的一步......
      【解决方案4】:

      在我的情况下,以下代码运行良好-

      String token = tokenValue.substring(7);
          Cookie name = new Cookie("Token", token);
          driver.manage().addCookie(name);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        相关资源
        最近更新 更多