gpt4 book ai didi

java - 如何创建 isSecure 标志为 false 的 org.openqa.selenium.Cookie

转载 作者:行者123 更新时间:2023-11-30 05:30:56 25 4
gpt4 key购买 nike

创建 cookie 并定义我希望 isSecure 字段为 false 时:

 driver.manage().addCookie(new Cookie(cookie.getName(), cookie.getValue(), cookie.getDomain(), cookie.getPath(), cookie.getExpiry(), false));

是Selenium,实际上WebDriver将参数设置为true:

driver.manage().getCookies().forEach(cookie -> {
System.out.println("Adding cookie isSecure: " + cookie.isSecure());
}); //prints Added cookie isSecure: true

我使用 Selenium 版本:

 <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>

我不知道为什么会发生这种情况。有什么解决办法吗?

最佳答案

您的代码将在 Firefox 中运行。看起来问题只存在于 chromedriver/chrome 上。

作为解决方法,请使用 Firefox。

说明:

用于添加 cookie 的 Java 绑定(bind)代码。

public Cookie(String name, String value, String domain, String path, Date expiry,
boolean isSecure, boolean isHttpOnly)


driver.manage().addCookie(
new Cookie("test", "test", "google.com", "/", null, false,false));

对于上面的代码,Webdriver 正在向 chromedriver 服务器发送正确的值。

[1566377805.242][INFO]: [70c91dc21b299384c804d153e40a6b0d] COMMAND AddCookie {
"cookie": {
"domain": "google.com",
"httpOnly": false,
"name": "test",
"path": "/",
"secure": false,
"value": "test"
}
}

甚至 Chrome Devtools 也在使用正确的数据调用 Network.setCookie

DevTools WebSocket Command: Network.setCookie (id=26) BB77CD380D314C209C8F2F8AE97C504D {
"domain": ".google.com",
"httpOnly": false,
"name": "test",
"path": "/",
"secure": false,
"url": "https://www.google.com/?gws_rd=ssl",
"value": "test"
}

对于 get 调用,其返回“secure”:true。

[1566377805.253][DEBUG]: DevTools WebSocket Response: Network.getCookies (id=30) BB77CD380D314C209C8F2F8AE97C504D {
"cookies": [ {
{
"domain": ".google.com",
"expires": -1,
"httpOnly": false,
"name": "test",
"path": "/",
"secure": true,
"session": true,
"size": 8,
"value": "test"
}]

从上面的日志来看:它看起来像是 chromedriver/chrome 的问题,而不是 Selenium Webdriver JAVA 绑定(bind)的问题。

对于 Firefox,其工作正常

WebDriver发送post请求

DEBUG   -> POST /session/8600dbc1-e2cd-449d-ad0d-fc5261e37266/cookie {
"cookie": {
"domain": "google.com",
"httpOnly": false,
"name": "test",
"path": "\u002f",
"secure": false,
"value": "test"
}
}

木偶也发送正确的数据

Marionette  DEBUG   0 -> [0,3,"WebDriver:AddCookie",{"cookie":{"domain":"google.com","httpOnly":false,"name":"test","path":"/","secure":false,"value":"test"}}]

接收正确的值“secure”:false

Marionette  DEBUG   0 -> [0,4,"WebDriver:GetCookies",{}]
1566378528552 Marionette DEBUG 0 <- [1,4,null,[{"name":"test","value":"test","path":"/","domain":".google.com","secure":false,"httpOnly":false}]]

在 Firefox/Geckodriver 中不是问题

关于java - 如何创建 isSecure 标志为 false 的 org.openqa.selenium.Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576164/

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