websocket - Karate UI WebSockets - 握手响应 getStatus 无效 : 403 Forbidden addOptions: ["--remote-allow-origins=*"] not working

标签 websocket karate

我正在尝试使用 Karate 执行一个简单的 UI 程序。以下是我的功能文件

Feature: UI Test validation

  Background:
    * configure driver = { type: 'chrome', addOptions: ['--no-sandbox', '--headless=new', '--remote-allow-origins=*', '--disable-extensions', '--disable-dev-shm-usage', '--disable-notifications' ], showDriverLog: true, showProcessLog: true, userDataDir: null }


@login
Scenario: Sample
Given driver <<url>>

我使用的是 karate-junit 0.9.6 版本和 google chrome 版本 117.0.5938.88。但我仍然面临以下执行方面的异常(exception)情况。我尝试了 karate UI webSockets : getting invalid handshake response getStatus: 403 Forbidden 中建议的解决方法但没有成功

16:17:31.267 [nioEventLoopGroup-2-1] DEBUG c.i.k.netty.WebSocketClientHandler - websocket client connect failed: Invalid handshake response getStatus: 403 Forbidden
16:17:31.267 [ForkJoinPool-1-worker-3] ERROR c.intuit.karate.driver.DriverOptions - websocket client init failed: Invalid handshake response getStatus: 403 Forbidden
16:17:31.268 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - driver config / start failed: io.netty.karate.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 403 Forbidden, options: {type=chrome, addOptions=["--no-sandbox","--headless=new","--remote-allow-origins=*","--disable-extensions","--disable-dev-shm-usage","--disable-notifications"], showDriverLog=true, showProcessLog=true, userDataDir=null, target=null}
java.lang.RuntimeException: io.netty.karate.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 403 Forbidden
    at com.intuit.karate.netty.WebSocketClient.<init>(WebSocketClient.java:144)
    at com.intuit.karate.driver.DevToolsDriver.<init>(DevToolsDriver.java:115)
    at com.intuit.karate.driver.chrome.Chrome.<init>(Chrome.java:52)
    at com.intuit.karate.driver.chrome.Chrome.start(Chrome.java:101)
    at com.intuit.karate.driver.DriverOptions.start(DriverOptions.java:288)
    at com.intuit.karate.core.ScenarioContext.driver(ScenarioContext.java:1056)
    at com.intuit.karate.StepActions.driver(StepActions.java:391)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intuit.karate.core.Engine.executeStep(Engine.java:150)
    at com.intuit.karate.core.ScenarioExecutionUnit.execute(ScenarioExecutionUnit.java:234)
    at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:319)
    at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: io.netty.karate.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 403 Forbidden
    at io.netty.karate.handler.codec.http.websocketx.WebSocketClientHandshaker13.verify(WebSocketClientHandshaker13.java:274)
    at io.netty.karate.handler.codec.http.websocketx.WebSocketClientHandshaker.finishHandshake(WebSocketClientHandshaker.java:302)
    at com.intuit.karate.netty.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:85)
    at io.netty.karate.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.karate.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.karate.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
    at io.netty.karate.handler.codec.http.websocketx.extensions.WebSocketClientExtensionHandler.channelRead(WebSocketClientExtensionHandler.java:127)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.karate.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.karate.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.karate.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.karate.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
    at io.netty.karate.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
    at io.netty.karate.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
    at io.netty.karate.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.karate.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.karate.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.karate.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.karate.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.karate.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.karate.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
    at io.netty.karate.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
    at io.netty.karate.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
    at io.netty.karate.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.karate.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.karate.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.karate.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:834)

UITest.feature:9 - driver config / start failed: io.netty.karate.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 403 Forbidden, options: {type=chrome, addOptions=["--no-sandbox","--headless=new","--remote-allow-origins=*","--disable-extensions","--disable-dev-shm-usage","--disable-notifications"], showDriverLog=true, showProcessLog=true, userDataDir=null, target=null}
16:17:31.319 [pool-1-thread-1] INFO  com.intuit.karate.Runner - <<fail>> feature 1 of 1: src/test/java/global/programs/UITest.feature

最佳答案

请尝试以下代码:

Feature: UI Test validation

  Background: 
    * configure driver = { type: 'chrome' }

  @login
  Scenario: Sample
    Given driver 'https://www.google.com/'

HTML 报告

enter image description here

使用1.4.0 Karate 版本,chrome版本为117。

关于websocket - Karate UI WebSockets - 握手响应 getStatus 无效 : 403 Forbidden addOptions: ["--remote-allow-origins=*"] not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77134033/

相关文章:

python-3.x - FastAPI/Starlette websocket.close() 不接受 "reason"参数

karate - 如何使用 Karate 工具比较 2 个 JSON 对象

javascript - 由 : com. intuit.karate.exception.KarateException: ReferenceError: "XMLHttpRequest"is not defined Karate 配置 js 文件中的异常引起

Karate : can not see print statements on console in karate

node.js - 将socket.io与sails js一起使用

spring - JSON Web Token (JWT) 和基于 Spring 的 SockJS/STOMP Web Socket

karate - 如何将动态值设置为请求中json字符串的键

arrays - 当响应数组为空时,如何在 Karate 中发送有意义的失败原因?

javascript - 使用 WebSockets 获取客户端列表

java - jetty websockets 发送二进制数据(图片)