如何在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"
}
}
答案 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))