当创建一个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
我使用硒版本:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
我不知道为什么会这样。 有什么解决方案吗?
您的代码可以在 Firefox 中工作。看起来问题只与铬驱动程序/铬有关。
作为解决方法,请使用火狐。
解释:
用于添加 cookie 的 Java 绑定代码。
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调用其返回的"安全":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绑定的问题。
对于火狐浏览器,它工作正常
网页驱动程序发送发布请求
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"}}]
接收正确的值"安全":假
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中不是问题