Karate 空手道UI-设置cookie()时cookie域无效

Karate 空手道UI-设置cookie()时cookie域无效,karate,Karate,我正在使用为API测试实现的现有登录功能为功能文件中的UI测试设置cookie。类似于空手道文档中描述的“混合方法”以及本主题中的- 我的功能文件是: Feature: UI one time login test Background: # I am using the existing login functionality. I perform a onetime login in karate-config and store the cookie in a config variab

我正在使用为API测试实现的现有登录功能为功能文件中的UI测试设置cookie。类似于空手道文档中描述的“混合方法”以及本主题中的-

我的功能文件是:

Feature: UI one time login test

Background:
# I am using the existing login functionality. I perform a onetime login in karate-config and store the cookie in a config variable and assign that to token variable defined below.
* def token = { value: '#(userAuthInfo.authSession)' }

# Then configure chromedriver
* configure driver = { type: 'chromedriver', showDriverLog: true, webDriverSession: { capabilities: { alwaysMatch: { acceptInsecureCerts: true } } } }

# Set the cookie
* driver 'about:blank'
* cookie({ name: 'SESSION', value: token.value, domain: 'localhost' })

Scenario: Visit url - 1
# webBaseUrl is defined in config
* driver webBaseUrl + 'url1'

当我运行此功能并检查日志时,我可以看到正确的请求数据被传递到/cookie端点,来自web驱动程序api的响应为error:400-无效cookie域。我还手动在chrome中打开了我的站点,并检查了cookie的设置方式,它与我在cookie()方法中传递json完全相同,包括域。甚至在不同的服务器上尝试使用不同的域,也会得到相同的错误。也许这并不特定于域,因为在请求中省略域密钥会产生相同的结果

详情如下:

设置cookie的POST请求

14:06:36.495 [pool-1-thread-1] DEBUG com.intuit.karate - request:
4 > POST http://localhost:9515/session/c837c3e34a7dffa03fa4dc281ba0e3da/cookie
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Content-Length: 97
4 > Content-Type: application/json; charset=UTF-8
4 > Host: localhost:9515
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/1.8.0_262)
{"cookie":{"name":"SESSION","value":"cd02f1d7-6100-450b-bad9-edba8ead96b3","domain":"localhost"}}
错误400响应:

14:06:36.501 [pool-1-thread-1] DEBUG com.intuit.karate - response time in milliseconds: 4.97
4 < 400
4 < Content-Length: 1696
4 < Content-Type: application/json; charset=utf-8
4 < cache-control: no-cache
{"value":{"error":"invalid cookie domain","message":"invalid cookie domain\n  (Session info: chrome=86.0.4240.111)","stacktrace":"0   chromedriver                        0x00000001080bbc29 chromedriver + 2464809\n1   chromedriver                      
14:06:36.501[pool-1-thread-1]DEBUG com.intuit.karate-响应时间(毫秒):4.97
4 < 400
4<内容长度:1696
4<内容类型:应用程序/json;字符集=utf-8
4<缓存控制:无缓存
{“值”:{“错误”:“无效cookie域”,“消息”:“无效cookie域\n(会话信息:chrome=86.0.4240.111)”,“stacktrace”:“0 chromedriver 0x00000001080bbc29 chromedriver+2464809\n1 chromedriver”

有什么想法吗?

可能是一个你可以调查并帮助我们进行更改的领域。我注意到chromedriver很挑剔。试试geckodriver,看看是否有什么不同。如果你尝试其他UI框架,看看我们是否缺少任何特殊处理,那就太好了

一个建议是添加一个
etc/hosts
条目,将
localhost
映射到
something.com
并使用该域


也可以看到这一点:

可能是一个你可以调查并帮助我们进行更改的领域。我注意到chromedriver很挑剔。试试geckodriver,看看是否有什么不同。如果你尝试其他UI框架,看看我们是否缺少任何特殊处理,那就太好了

一个建议是添加一个
etc/hosts
条目,将
localhost
映射到
something.com
并使用该域


还可以看到:

我确实注意到了一些事情。当我将
驱动程序的about:blank
替换为
驱动程序webBaseUrl
,这是网站的基本url时,我在设置cookie调用时得到了状态200。因此错误400消失了。但是,打开网站页面仍然需要我登录页面,这意味着cookie没有实际设置。不确定是什么t在这里发生。我尝试了geckodriver和chromedriver。结果相同。也许我在cookie中设置的令牌不正确?但我可以在空手道api测试中使用相同的令牌访问应用程序api。@rochitsen下一个版本的cookie上有一些工作:-真正有用的是a)提供sample遵循以下过程:b)帮助我们处理代码c)至少对您的发现和我们应该更改的内容进行评论我确实注意到了一些事情。当我将
driver'about:blank
替换为
driver webBaseUrl
,这是网站的基本url时,我在set cookie调用中获得了状态200。因此错误400消失了。但是,打开页面网站的s仍然需要我登录页面,这意味着cookie没有实际设置。不确定这里发生了什么。我尝试了geckodriver和chromedriver。结果相同。也许我在cookie中设置的令牌不正确?但我可以在空手道api测试中使用相同的令牌访问应用程序api。@rochitsen有一些工作要做关于下一版本的cookies:-真正有用的是a)提供以下流程的示例:b)帮助我们编写代码c)至少对您的发现和我们应该更改的内容进行评论