Selenium/Watir: 'InvalidCookieDomain' 尝试添加 cookie 时出错
Selenium/Watir: 'InvalidCookieDomain' error when trying to add cookie
我是 WATIR 或 Selenium 的新手,但我试图在我的 WATIR 浏览器中添加一个 cookie,如下所示:
browser = Watir::Browser.new :firefox
browser.goto(url)
browser.cookies.add name,value, domain: ".www.example.com"
我收到以下错误提示:
Selenium::WebDriver::Error::UnknownError: ReferenceError: InvalidCookieDomainError is not defined
但是,当我删除域选项时,它起作用了。
我想知道为什么我不能在我的 cookie 中添加不同的域?
与 WATIR 一样,所有基于 Selenium 的框架都会为 Selenium 预定义命令创建特定于语言的包装器。这些命令在 Selenium Webdriver W3C 标准中定义 here。
如果您转到 Cookies 部分,特别是 addCookie
子部分,您将看到以下内容:
If the current browsing context’s document element is a cookie-averse Document object, return error with error code invalid cookie domain.
您的 domain
属性绑定到与给定的 url
相同的域。因此,基本上,您的域 HAS 与您当前的 url
或 url
的子域相同。
示例: 对于 url=global.nba.com
,您可以为子域 ({domain: "global.nba.com"}
) 和根域设置 cookie ({domain: "nba.com"}
).
browser = Watir::Browser.new :firefox
browser.goto(url)
browser.cookies.add("<yourCookieName>","<yourCookieValue>", {domain: "<sameUrlOriginDomain>"})
希望对您有所帮助!
在我的例子中,我必须先去 url 才能设置 cookie,例如
visit root_path
('f'..'k').each.with_index do |cookie, index|
Helper::Browser.set_cookie(:esid, cookie)
visit root_path
end
我是 WATIR 或 Selenium 的新手,但我试图在我的 WATIR 浏览器中添加一个 cookie,如下所示:
browser = Watir::Browser.new :firefox
browser.goto(url)
browser.cookies.add name,value, domain: ".www.example.com"
我收到以下错误提示:
Selenium::WebDriver::Error::UnknownError: ReferenceError: InvalidCookieDomainError is not defined
但是,当我删除域选项时,它起作用了。
我想知道为什么我不能在我的 cookie 中添加不同的域?
与 WATIR 一样,所有基于 Selenium 的框架都会为 Selenium 预定义命令创建特定于语言的包装器。这些命令在 Selenium Webdriver W3C 标准中定义 here。
如果您转到 Cookies 部分,特别是 addCookie
子部分,您将看到以下内容:
If the current browsing context’s document element is a cookie-averse Document object, return error with error code invalid cookie domain.
您的 domain
属性绑定到与给定的 url
相同的域。因此,基本上,您的域 HAS 与您当前的 url
或 url
的子域相同。
示例: 对于 url=global.nba.com
,您可以为子域 ({domain: "global.nba.com"}
) 和根域设置 cookie ({domain: "nba.com"}
).
browser = Watir::Browser.new :firefox
browser.goto(url)
browser.cookies.add("<yourCookieName>","<yourCookieValue>", {domain: "<sameUrlOriginDomain>"})
希望对您有所帮助!
在我的例子中,我必须先去 url 才能设置 cookie,例如
visit root_path
('f'..'k').each.with_index do |cookie, index|
Helper::Browser.set_cookie(:esid, cookie)
visit root_path
end