如何使用 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】:除了name
和value
之外,还需要在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) 中最大化浏览器窗口?