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 与您当前的 urlurl 的子域相同。

示例: 对于 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