gpt4 book ai didi

java - 如何在 Java 中将 cookie 从 HttpURLConnection 传递到 WebDriver?

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:23 27 4
gpt4 key购买 nike

我正在测试一个需要一些基本身份验证的网站。成功登录后, session key 将在 cookie 中发回。我已经编写了一些代码来通过网络服务获取此 cookie。结局是这样的:

public List<HttpCookie> getCookies(String Domain, String user, String pass) {
// Actual services to log in here
List<HttpCookie> cookies = cookieStore.getCookies();
for (HttpCookie cookie : cookies) {
System.out.println(cookie);
}

return cookies;
}

当我调试时,我可以看到我的 sessionKey 其中包含有效值。它具有与我上面传递的相同的 domain,以及一个像 / 这样的空白路径。

以下是我尝试将 cookie 添加到我的 WebDriver 实例的方法:

List<HttpCookie> cookies = getCookies(DOMAIN, USERNAME, PASSWORD);
for (HttpCookie cookie : cookies) {
String cookieName = cookie.getName();
String cookieValue = cookie.getValue();
String cookieDomain = cookie.getDomain();
String cookiePath = cookie.getPath();
Date cookieExpiry = new Date();
Cookie selCookie = new Cookie(cookieName, cookieValue, cookieDomain, cookiePath, cookieExpiry);
driver.manage().addCookie(selCookie);
}
driver.get(ROOT_URL+"/some/internal/page");

当我尝试添加 selCookie 时,收到以下错误消息:

org.openqa.selenium.InvalidCookieDomainException: You may only set cookies for the current domain

我直接从收到的 cookie 中复制域。我什至尝试将其作为裸字符串传递,而不是依赖 getDomain() 方法,但它返回了相同的错误。知道什么可能导致它提示吗?

最佳答案

要将 cookie 添加到 WebDriver 实例,cookie 中的域必须与 WebDriver 实例的当前域匹配。我试图在 driver 访问任何内容之前添加 cookie,因此 driver 的当前域为空。我通过在检索 session cookie 并将其添加到 driver 之前将 driver 发送到 ROOT_URL 来修复此问题:

 //Added this:
driver.get(ROOT_URL);

List<HttpCookie> cookies = getCookies(DOMAIN, USERNAME, PASSWORD);
for (HttpCookie cookie : cookies) {
String cookieName = cookie.getName();
String cookieValue = cookie.getValue();
String cookieDomain = cookie.getDomain();
String cookiePath = cookie.getPath();
Date cookieExpiry = new Date();
Cookie selCookie = new Cookie(cookieName, cookieValue, cookieDomain, cookiePath, cookieExpiry);
driver.manage().addCookie(selCookie);
}
driver.get(ROOT_URL+"/some/internal/page");

关于java - 如何在 Java 中将 cookie 从 HttpURLConnection 传递到 WebDriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com