如何使用 selenium webdriver 发送 cookie?

Posted

技术标签:

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

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

如何通过登录操作?

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

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于如何使用 selenium webdriver 发送 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用selenium webdriver来判断一个网页加载完毕

Selenium & webdriver.io 如何使用 executeScript?

如何使用selenium webdriver来判断一个网页加载完毕

如何使用 C# 在 Selenium WebDriver (Selenium 2) 中最大化浏览器窗口?

如何在 ruby​​ 中使用 Selenium WebDriver (selenium 2.0) 客户端设置选项

如何在 Java 中使用 Selenium WebDriver (Selenium 2) 输入文本框?