如何使用PhamtomJS在Geb / Selenium中设置cookie

时间:2017-02-25 15:55:47

标签: selenium groovy phantomjs geb

如何在Geb中设置cookie?我用给定的例子遇到了以下错误:

org.openqa.selenium.InvalidCookieDomainException:{“errorMessage”:“只能为当前域设置Cookie”....

..我也尝试使用Cookie Builder显式设置cookie domino虽然只会导致另一个异常:org.openqa.selenium.UnableToSetCookieException:{“errorMessage”:“无法设置Cookie”}

请注意,我曾经在GebConfig.groovy文件中有一个baseURL ..但我也删除了它..除了PhantomJS驱动程序配置之外,配置文件中没有设置。

我在OSX上使用PhantomJS最新版本(1.3.0 jar和2.1.1驱动程序OSX)。

请注意,示例DOES因某些原因使用Chrome Webdriver。

import geb.spock.GebSpec
import org.openqa.selenium.Cookie

class SetCookieIT extends GebSpec {
    def "Cookie example"() {
        given:
        def options = driver.manage()

        when:
        go "https://www.wikipedia.org/"
        then:
        !options.getCookieNamed("my-geb-cookie")

        when:
        options.addCookie(new Cookie("my-geb-cookie", "foobar"))
        go "https://www.wikipedia.org/"
        then:
        title == "Wikipedia"
        options.getCookieNamed("my-geb-cookie").value == "foobar"
    }
}

1 个答案:

答案 0 :(得分:5)

维基百科没有拼写" ie"在域名和" org.com"看起来也很奇怪。也许下次你想提供一个实际可执行的例子并做一些有意义的事情。 :-7

对我而言,这很有效:

package de.scrum_master.stackoverflow

import geb.spock.GebReportingSpec
import org.openqa.selenium.Cookie

class SetCookieIT extends GebReportingSpec {
  def "Cookie example"() {
    given:
    def options = driver.manage()

    when:
    go "https://www.wikipedia.org/"
    then:
    !options.getCookieNamed("my-geb-cookie")

    when:
    options.addCookie(new Cookie("my-geb-cookie", "foobar"))
    go "https://www.wikipedia.org/"
    then:
    title == "Wikipedia"
    options.getCookieNamed("my-geb-cookie").value == "foobar"
  }
}

如果您有任何其他问题,请更新您的问题并提供SSCCE复制实际问题。

问题被修改后

更新:PhantomJS的问题在于,如果您没有明确指定域,则拒绝创建cookie。这有效:

options.addCookie(new Cookie("my-geb-cookie", "foobar", ".wikipedia.org", "/", null))