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

vic*_*csz 0 groovy selenium geb phantomjs

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

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

..我也尝试使用Cookie生成器显式设置cookie多米诺骨牌虽然这只会导致另一个异常: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"
    }
}
Run Code Online (Sandbox Code Playgroud)

kri*_*aex 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您有任何其他问题,请更新您的问题并提供SSCCE再现实际问题.


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

options.addCookie(new Cookie("my-geb-cookie", "foobar", ".wikipedia.org", "/", null))
Run Code Online (Sandbox Code Playgroud)