我正在尝试使用域名,而不是主机或整个网站创建Cookie。
我现在有了这个代码
driver.manage.add_cookie(:name => 'test', :value => 'testvalue', :path => '/', :secure => false)
我想要这样的东西
name=test
value=testvalue
domain=.site.com
path=/
我在firefox cookie对话框中得到了这样的结果
虽然我想要这样的东西
您可以看到Host:
在我的情况下为空,在另一种情况下,它会被Domain:
替换,这就是我想要实现的目标,将Cookie域设置为.mydomain.com
< / p>
我希望JavaScript能够实现这一点,以便能够读取特定于域的cookie,因为它无法读取当前域范围之外的内容。
答案 0 :(得分:5)
请尝试以下操作:
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get('http://eu.httpbin.org') # <-- required.
driver.manage.add_cookie(name: 'test', value: 'testvalue', path: '/', domain: '.httpbin.org')
driver.get('http://eu.httpbin.org/cookies') # eu.httpbin.org
puts driver.page_source
# => ...
# {
# "cookies": {
# "test": "testvalue"
# }
# }
# ...
driver.get('http://httpbin.org/cookies') # httpbin.org
puts driver.page_source
# => ...
# {
# "cookies": {
# "test": "testvalue"
# }
# }
# ...
注意:在添加Cookie之前,您必须转到相同的域页面(html页面)。
答案 1 :(得分:4)
您可以使用 JavaScript :
执行以下操作require "selenium-webdriver"
require "awesome_print"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://example.com"
COOKIE_DOMAIN = <<-eotl
var cookieName = arguments[0];
var cookieValue = arguments[1];
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + encodeURIComponent(cookieValue)
+ ";expires=" + myDate
+ ";domain=.example.com;path=/";
eotl
driver.execute_script(COOKIE_DOMAIN,'test','testvalue')
ap driver.manage.cookie_named('test')
<强>输出强>
{
:name => "test",
:value => "testvalue",
:path => "/",
:domain => ".example.com",
:expires => #<DateTime: 2014-09-09T07:43:12+00:00 ((2456910j,27792s,999999924n),+0s,2299161j)>,
:secure => false
}