question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Cannot run playwright tests on Selenium Grid.

See original GitHub issue

I have created a simple .net 6 console app to check whether it is possible to use Selenium Grid instead of Moon in order to have a svc managing the Browsers.

this is my dummy code Program.cs:

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Channel = "chrome" });
var ctx = await browser.NewContextAsync(new BrowserNewContextOptions()
{
    IgnoreHTTPSErrors = true
});

var page = await ctx.NewPageAsync();

var url = "https://playwright.dev/dotnet/docs/intro";
var response = await page.GotoAsync(url, new PageGotoOptions
    {
        WaitUntil = WaitUntilState.DOMContentLoaded
    });

Console.WriteLine(response.Ok);

await page.ScreenshotAsync(new PageScreenshotOptions
{
    Path = "screenshot.png",
    FullPage = true
});

Console.WriteLine("Screenshot ok");

I have set the necessary env variables SELENIUM_REMOTE_URL

—> THE PROBLEM <—

The screenshot for full page times out.

If i remove the FullPage = true the screenshot succeeds.

Similarly, if i do a page.clickAsync() action it times out,

page.CloseAsync() works.

navigating to different pages with page.GoToAsync calls again works without issue.

It looks like some actions just do not work.

I am attaching the errors i get from the hub and the chrome pod.

  • SELENIUM HUB:
15:26:09.260 INFO [Node.<init>] - Binding additional locator mechanisms: name, id, relative
15:26:09.461 INFO [GridModel.setAvailability] - Switching Node ce697328-ea35-490b-94b5-e1afa3e0a67e (uri: http://10.244.1.71:5555/ ) from DOWN to UP
15:26:09.461 INFO [LocalDistributor.add] - Added node ce697328-ea35-490b-94b5-e1afa3e0a67e at http://10.244.1.71:5555/ . Health check every 120s
15:33:17.688 INFO [LocalDistributor.newSession] - Session request received by the Distributor:
[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--disable-field-trial-config, --disable-background-networ..., --enable-features=NetworkSe..., --disable-background-timer-..., --disable-backgrounding-occ..., --disable-back-forward-cache, --disable-breakpad, --disable-client-side-phish..., --disable-component-extensi..., --disable-default-apps, --disable-dev-shm-usage, --disable-extensions, --disable-features=Improved..., --allow-pre-commit-input, --disable-hang-monitor, --disable-ipc-flooding-prot..., --disable-popup-blocking, --disable-prompt-on-repost, --disable-renderer-backgrou..., --disable-sync, --force-color-profile=srgb, --metrics-recording-only, --no-first-run, --enable-automation, --password-store=basic, --use-mock-keychain, --no-service-autorun, --export-tagged-pdf, --headless, --hide-scrollbars, --mute-audio, --blink-settings=primaryHov..., --no-sandbox, --remote-debugging-port=0]}}]
15:33:18.650 INFO [LocalDistributor.newSession] - Session created by the Distributor. Id: 37972c369578e697a6be9360403fd256
Caps: Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 106.0.5249.119, chrome: {chromedriverVersion: 106.0.5249.61 (511755355844..., userDataDir: /tmp/.com.google.Chrome.sUT3Fb}, goog:chromeOptions: {debuggerAddress: localhost:42649}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: LINUX, proxy: {}, se:bidiEnabled: false, se:cdp: ws://selenium-hub:4444/sess..., se:cdpVersion: 106.0.5249.119, se:vnc: ws://selenium-hub:4444/sess..., se:vncEnabled: true, se:vncLocalAddress: ws://10.244.1.71:7900, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
15:33:20.031 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.lang.IllegalArgumentException: statusCode
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: statusCode
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendClose(WebSocketImpl.java:301)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$2(JdkHttpClient.java:215)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:222) ... 9 more 15:33:20.197 INFO [GridModel.release] - Releasing slot for session id 37972c369578e697a6be9360403fd256 15:33:20.197 INFO [LocalSessionMap.lambda5.send(JdkHttpClient.java:222)...9more15:33:20.197INFO[GridModel.release]−Releasingslotforsessionid37972c369578e697a6be9360403fd25615:33:20.197INFO[LocalSessionMap.lambdanew0] - Deleted session from local Session Map, Id: 37972c369578e697a6be9360403fd256 15:33:48.408 INFO [LocalDistributor.newSession] - Session request received by the Distributor: [Capabilities {browserName: chrome, goog:chromeOptions: {args: [--disable-field-trial-config, --disable-background-networ..., --enable-features=NetworkSe..., --disable-background-timer-..., --disable-backgrounding-occ..., --disable-back-forward-cache, --disable-breakpad, --disable-client-side-phish..., --disable-component-extensi..., --disable-default-apps, --disable-dev-shm-usage, --disable-extensions, --disable-features=Improved..., --allow-pre-commit-input, --disable-hang-monitor, --disable-ipc-flooding-prot..., --disable-popup-blocking, --disable-prompt-on-repost, --disable-renderer-backgrou..., --disable-sync, --force-color-profile=srgb, --metrics-recording-only, --no-first-run, --enable-automation, --password-store=basic, --use-mock-keychain, --no-service-autorun, --export-tagged-pdf, --headless, --hide-scrollbars, --mute-audio, --blink-settings=primaryHov..., --no-sandbox, --remote-debugging-port=0]}}] 15:33:48.660 INFO [LocalDistributor.newSession] - Session created by the Distributor. Id: 871135c74f65c9368403e2c5b587c386 Caps: Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 106.0.5249.119, chrome: {chromedriverVersion: 106.0.5249.61 (511755355844..., userDataDir: /tmp/.com.google.Chrome.bMGdRp}, goog:chromeOptions: {debuggerAddress: localhost:45765}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: LINUX, proxy: {}, se:bidiEnabled: false, se:cdp: ws://selenium-hub:4444/sess..., se:cdpVersion: 106.0.5249.119, se:vnc: ws://selenium-hub:4444/sess..., se:vncEnabled: true, se:vncLocalAddress: ws://10.244.1.71:7900, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true} 15:33:49.590 WARN [ProxyWebsocketsIntoGridForwardingListener.onError] - Error proxying websocket command
java.net.ProtocolException
at java.net.http/jdk.internal.net.http.websocket.WebSocketImplReceiveTask.processError(WebSocketImpl.java:487) at java.net.http/jdk.internal.net.http.websocket.WebSocketImplReceiveTask.processError(WebSocketImpl.java:487)atjava.net.http/jdk.internal.net.http.websocket.WebSocketImplReceiveTask.run(WebSocketImpl.java:454)
at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147) at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147)atjava.net.http/jdk.internal.net.http.common.SequentialSchedulerSchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.trySetState(WebSocketImpl.java:837)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.signalError(WebSocketImpl.java:714)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImplSignallingMessageConsumer.onError(WebSocketImpl.java:825) at java.net.http/jdk.internal.net.http.websocket.TransportImplSignallingMessageConsumer.onError(WebSocketImpl.java:825)atjava.net.http/jdk.internal.net.http.websocket.TransportImplReceiveTask.run(TransportImpl.java:671)
at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147) at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147)atjava.net.http/jdk.internal.net.http.common.SequentialSchedulerSchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.TransportImplReadEvent.handle(TransportImpl.java:762) at java.net.http/jdk.internal.net.http.RawChannelTubeReadEvent.handle(TransportImpl.java:762)atjava.net.http/jdk.internal.net.http.RawChannelTubeReadSubscriber.checkEvents(RawChannelTube.java:174)
at java.net.http/jdk.internal.net.http.RawChannelTubeReadSubscriber.onNext(RawChannelTube.java:204) at java.net.http/jdk.internal.net.http.RawChannelTubeReadSubscriber.onNext(RawChannelTube.java:204)atjava.net.http/jdk.internal.net.http.RawChannelTubeReadSubscriber.onNext(RawChannelTube.java:157)
at java.net.http/jdk.internal.net.http.SocketTubeInternalReadPublisherInternalReadPublisherInternalReadSubscription.read(SocketTube.java:844)
at java.net.http/jdk.internal.net.http.SocketTubeSocketFlowTask.run(SocketTube.java:175) at java.net.http/jdk.internal.net.http.common.SequentialSchedulerSocketFlowTask.run(SocketTube.java:175)atjava.net.http/jdk.internal.net.http.common.SequentialSchedulerSchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.SocketTubeInternalReadPublisherInternalReadPublisherInternalReadSubscription.signalReadable(SocketTube.java:763)
at java.net.http/jdk.internal.net.http.SocketTubeInternalReadPublisherInternalReadPublisherReadEvent.signalEvent(SocketTube.java:941)
at java.net.http/jdk.internal.net.http.SocketTubeSocketFlowEvent.handle(SocketTube.java:245) at java.net.http/jdk.internal.net.http.HttpClientImplSocketFlowEvent.handle(SocketTube.java:245)atjava.net.http/jdk.internal.net.http.HttpClientImplSelectorManager.handleEvent(HttpClientImpl.java:957)
at java.net.http/jdk.internal.net.http.HttpClientImplSelectorManager.lambdaSelectorManager.lambdarun3(HttpClientImpl.java:912) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at java.net.http/jdk.internal.net.http.HttpClientImpl3(HttpClientImpl.java:912)atjava.base/java.util.ArrayList.forEach(ArrayList.java:1541)atjava.net.http/jdk.internal.net.http.HttpClientImplSelectorManager.run(HttpClientImpl.java:912)
Caused by: jdk.internal.net.http.websocket.FailWebSocketException: Unexpected frame CONTINUATION (fin=false)
at java.net.http/jdk.internal.net.http.websocket.MessageDecoder.opcode(MessageDecoder.java:133)
at java.net.http/jdk.internal.net.http.websocket.FrameReader.readFrame(Frame.java:391) at java.net.http/jdk.internal.net.http.websocket.TransportImplReader.readFrame(Frame.java:391)atjava.net.http/jdk.internal.net.http.websocket.TransportImplReceiveTask.run(TransportImpl.java:665)
... 20 more
15:34:19.584 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.io.IOException: Output closed
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.io.IOException: Output closed at java.net.http/jdk.internal.net.http.websocket.MessageEncoder.encodeText(MessageEncoder.java:136) at java.net.http/jdk.internal.net.http.websocket.TransportImpl2.run(ThreadExecutorMap.java:74)atio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)atjava.base/java.lang.Thread.run(Thread.java:829)Causedby:java.io.IOException:Outputclosedatjava.net.http/jdk.internal.net.http.websocket.MessageEncoder.encodeText(MessageEncoder.java:136)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask1.onText(TransportImpl.java:366) at java.net.http/jdk.internal.net.http.websocket.TransportImpl1.onText(TransportImpl.java:366)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask1.onText(TransportImpl.java:357) at java.net.http/jdk.internal.net.http.websocket.MessageQueue.peek(MessageQueue.java:223) at java.net.http/jdk.internal.net.http.websocket.TransportImpl1.onText(TransportImpl.java:357)atjava.net.http/jdk.internal.net.http.websocket.MessageQueue.peek(MessageQueue.java:223)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask.run(TransportImpl.java:545)
at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147) at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147)atjava.net.http/jdk.internal.net.http.common.SequentialSchedulerSchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.TransportImpl.sendText(TransportImpl.java:149)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendText(WebSocketImpl.java:184)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$1(JdkHttpClient.java:211)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient$5.send(JdkHttpClient.java:222)
... 9 more
15:34:19.585 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.io.IOException: Output closed
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.io.IOException: Output closed at java.net.http/jdk.internal.net.http.websocket.MessageEncoder.encodeText(MessageEncoder.java:136) at java.net.http/jdk.internal.net.http.websocket.TransportImpl2.run(ThreadExecutorMap.java:74)atio.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)atjava.base/java.lang.Thread.run(Thread.java:829)Causedby:java.io.IOException:Outputclosedatjava.net.http/jdk.internal.net.http.websocket.MessageEncoder.encodeText(MessageEncoder.java:136)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask1.onText(TransportImpl.java:366) at java.net.http/jdk.internal.net.http.websocket.TransportImpl1.onText(TransportImpl.java:366)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask1.onText(TransportImpl.java:357) at java.net.http/jdk.internal.net.http.websocket.MessageQueue.peek(MessageQueue.java:223) at java.net.http/jdk.internal.net.http.websocket.TransportImpl1.onText(TransportImpl.java:357)atjava.net.http/jdk.internal.net.http.websocket.MessageQueue.peek(MessageQueue.java:223)atjava.net.http/jdk.internal.net.http.websocket.TransportImplSendTask.run(TransportImpl.java:545)
at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147) at java.net.http/jdk.internal.net.http.common.SequentialSchedulerCompleteRestartableTask.run(SequentialScheduler.java:147)atjava.net.http/jdk.internal.net.http.common.SequentialSchedulerSchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.TransportImpl.sendText(TransportImpl.java:149)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendText(WebSocketImpl.java:184)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$1(JdkHttpClient.java:211)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient$5.send(JdkHttpClient.java:222)
... 9 more
15:34:19.591 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.lang.IllegalArgumentException: statusCode
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: statusCode
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendClose(WebSocketImpl.java:301)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$2(JdkHttpClient.java:215)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:222) ... 9 more 15:34:19.673 INFO [GridModel.release] - Releasing slot for session id 871135c74f65c9368403e2c5b587c386 15:34:19.673 INFO [LocalSessionMap.lambda5.send(JdkHttpClient.java:222)...9more15:34:19.673INFO[GridModel.release]−Releasingslotforsessionid871135c74f65c9368403e2c5b587c38615:34:19.673INFO[LocalSessionMap.lambdanew$0] - Deleted session from local Session Map, Id: 871135c74f65c9368403e2c5b587c386
  • SELENIUM CHROME POD:
2022-11-17 15:26:04,639 INFO Included extra file "/etc/supervisor/conf.d/selenium.conf" during parsing
2022-11-17 15:26:04,643 INFO RPC interface 'supervisor' initialized
2022-11-17 15:26:04,643 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2022-11-17 15:26:04,643 INFO supervisord started with pid 9
2022-11-17 15:26:05,645 INFO spawned: 'xvfb' with pid 11
2022-11-17 15:26:05,646 INFO spawned: 'vnc' with pid 12
2022-11-17 15:26:05,647 INFO spawned: 'novnc' with pid 13
2022-11-17 15:26:05,649 INFO spawned: 'selenium-node' with pid 14
2022-11-17 15:26:05,666 INFO success: selenium-node entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
Generating Selenium Config
Configuring server...
Setting up SE_NODE_HOST...
Setting up SE_NODE_PORT...
Selenium Grid Node configuration:
[events]
publish = "tcp://selenium-hub:4442"
subscribe = "tcp://selenium-hub:4443"
[node]
grid-url = "http://selenium-hub:4444/wd/hub/ "
session-timeout = "300"
override-max-sessions = false
detect-drivers = false
drain-after-session-count = 0
max-sessions = 1
[[node.driver-configuration]]
display-name = "chrome"
stereotype = '{"browserName": "chrome", "browserVersion": "106.0", "platformName": "Linux"}'
max-sessions = 1
Starting Selenium Grid Node...
2022-11-17 15:26:06,670 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2022-11-17 15:26:06,670 INFO success: vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2022-11-17 15:26:06,670 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
15:26:07.161 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
15:26:07.164 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
15:26:07.381 INFO [UnboundZmqEventBus.<init>] - Connecting to tcp://selenium-hub:4442 and tcp://selenium-hub:4443
15:26:07.562 INFO [UnboundZmqEventBus.<init>] - Sockets created
15:26:08.563 INFO [UnboundZmqEventBus.<init>] - Event bus ready
15:26:08.756 INFO [NodeServer.createHandlers] - Reporting self as: http://10.244.1.71:5555/ 
15:26:08.768 INFO [NodeOptions.getSessionFactories] - Detected 1 available processors
15:26:08.868 INFO [NodeOptions.report] - Adding chrome for {"browserVersion": "106.0","se:noVncPort": 7900,"browserName": "chrome","platformName": "LINUX","se:vncEnabled": true} 1 times
15:26:08.879 INFO [Node.<init>] - Binding additional locator mechanisms: id, relative, name
15:26:09.197 INFO [NodeServer$1.start] - Starting registration process for Node http://10.244.1.71:5555/ 
15:26:09.197 INFO [NodeServer.execute] - Started Selenium node 4.5.3 (revision 4b786a1e430): http://10.244.1.71:5555/ 
15:26:09.257 INFO [NodeServer1.lambda1.lambdastart1] - Sending registration event... 15:26:09.465 INFO [NodeServer.lambda1]−Sendingregistrationevent...15:26:09.465INFO[NodeServer.lambdacreateHandlers$2] - Node has been added
Starting ChromeDriver 106.0.5249.61 (511755355844955cd3e264779baf0dd38212a4d0-refs/branch-heads/5249@{#569}) on port 17620
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations  for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
15:33:18.577 INFO [LocalNode.newSession] - Session created by the Node. Id: 37972c369578e697a6be9360403fd256, Caps: Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 106.0.5249.119, chrome: {chromedriverVersion: 106.0.5249.61 (511755355844..., userDataDir: /tmp/.com.google.Chrome.sUT3Fb}, goog:chromeOptions: {debuggerAddress: localhost:42649}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: LINUX, proxy: Proxy(), se:cdp: http://localhost:42649/ , se:cdpVersion: 106.0.5249.119, se:vncEnabled: true, se:vncLocalAddress: ws://10.244.1.71:7900, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
15:33:18.676 INFO [ProxyNodeWebsockets.createWsEndPoint] - Establishing connection to ws://localhost:42649/devtools/browser/4cb31343-3639-4be6-95bf-0e2c0c39365d
15:33:20.063 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.lang.IllegalArgumentException: statusCode
Build info: version: '4.5.3', revision: '4b786a1e430'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: statusCode
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendClose(WebSocketImpl.java:301)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$2(JdkHttpClient.java:215)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient$5.send(JdkHttpClient.java:222)
... 9 more
15:33:20.196 INFO [SessionSlot.stop] - Stopping session 37972c369578e697a6be9360403fd256
Starting ChromeDriver 106.0.5249.61 (511755355844955cd3e264779baf0dd38212a4d0-refs/branch-heads/5249@{#569}) on port 22517
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations  for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
15:33:48.655 INFO [LocalNode.newSession] - Session created by the Node. Id: 871135c74f65c9368403e2c5b587c386, Caps: Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 106.0.5249.119, chrome: {chromedriverVersion: 106.0.5249.61 (511755355844..., userDataDir: /tmp/.com.google.Chrome.bMGdRp}, goog:chromeOptions: {debuggerAddress: localhost:45765}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: LINUX, proxy: Proxy(), se:cdp: http://localhost:45765/ , se:cdpVersion: 106.0.5249.119, se:vncEnabled: true, se:vncLocalAddress: ws://10.244.1.71:7900, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
15:33:48.684 INFO [ProxyNodeWebsockets.createWsEndPoint] - Establishing connection to ws://localhost:45765/devtools/browser/d15d481d-342d-4935-9f0d-88dbf2e95d2b
15:33:49.587 WARN [MessageInboundConverter.channelRead0] - Frame is not final. Chaos may ensue
15:33:49.591 WARN [DefaultChannelPipeline.onUnhandledInboundException] - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
org.openqa.selenium.WebDriverException: java.lang.IllegalArgumentException: statusCode
Build info: version: '4.5.3', revision: '4b786a1e430'
System info: [os.name](http://os.name/) : 'Linux', os.arch: 'amd64', os.version: '5.4.0-1091-azure', java.version: '11.0.16'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.send(JdkHttpClient.java:232) at org.openqa.selenium.netty.server.WebSocketMessageHandler.lambda5.send(JdkHttpClient.java:232)atorg.openqa.selenium.netty.server.WebSocketMessageHandler.lambdachannelRead0$0(WebSocketMessageHandler.java:47)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: statusCode
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.sendClose(WebSocketImpl.java:301)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient5.lambda5.lambdasend$2(JdkHttpClient.java:215)
at org.openqa.selenium.remote.http.jdk.JdkHttpClient$5.send(JdkHttpClient.java:222)
... 9 more
15:34:19.672 INFO [SessionSlot.stop] - Stopping session 871135c74f65c9368403e2c5b587c386

I have tried both with chrome and edge. I have also tried different versions of playwright 1.17.3 to 1.27.2 and changed the browser versions on Selenium Grid deployment without any success 😦

I also created another app that uses Selenium.Webdriver and everything works fine:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;

namespace WebScreenShot
{
    internal class Program
    {
        static void Main(string[] args)
        {
            CaptureWebPage("https://learnwithhasan.com");
        }

        public static void CaptureWebPage(string url)
        {
            var options = new ChromeOptions();
            //options.AddArgument("--headless");
            options.AddArgument("user-agent=Mozilla/5.0 " +
                "(Windows NT 10.0; Win64; x64) AppleWebKit/537.36" +
                " (KHTML, like Gecko) Chrome/74.0.3729.169 " +
                "Safari/537.36");

            RemoteWebDriver driver;

            //CHROME and IE            
            ChromeOptions Options = new ChromeOptions();

            driver = new RemoteWebDriver(
                new Uri("http://selenium-hub:4444/wd/hub/"),Options.ToCapabilities(), TimeSpan.FromSeconds(600));// NOTE: connection timeout of 600 seconds or more required for time to launch grid n

            driver.Navigate().GoToUrl(url);

            ITakesScreenshot screenshotDriver = 
                driver as ITakesScreenshot;
         
            //< a href = "https://learnwithhasan.com/google-ads-api-keyword-tool-csharp/" >
            //           Google Ads API: Build A Keyword Research Tool With C# For Free!			</a>
            WebDriverWait w = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
            w.Until(drv => drv.FindElement(By.XPath("//a[@href='https://learnwithhasan.com/google-ads-api-keyword-tool-csharp/']")));
            var element= driver.FindElement(
                    By.XPath("//a[@href='https://learnwithhasan.com/google-ads-api-keyword-tool-csharp/']"));
               element.Click();
               Screenshot screenshot = screenshotDriver.GetScreenshot();
            screenshot.SaveAsFile("Test.png");
        }
    }
}

Thank you in advance! Dimitris

Issue Analytics

  • State:open
  • Created 10 months ago
  • Comments:13 (3 by maintainers)

github_iconTop GitHub Comments

2reactions
sohambbhcommented, Nov 23, 2022

I’m also facing a similar issue with the latest grid versions. The issues are reproducible with grid versions: 4.5.2, 4.5.3,4.6.0 . Surprisingly With 4.5.0 it works perfectly fine. Playwright versions I tried all > 1.19

with the selenium grid its able to connect. It launches the browser and even navigates to the url. But after that it doesn’t interact with the grid.

grid log says - WARN [ProxyWebsocketsIntoGrid$ForwardingListener.onError] - Error proxying websocket command java.net.ProtocolException

1reaction
dgozmancommented, Nov 25, 2022

grid log says - WARN [ProxyWebsocketsIntoGrid$ForwardingListener.onError] - Error proxying websocket command java.net.ProtocolException

Playwright does indeed use proxying websocket functionality. We’ll take a look, but for now I’d suggest to stay on 4.5.0 since that seems to work.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Selenium Grid | Playwright
If you run distributed Selenium Grid, Playwright needs selenium nodes to be registered with an accessible address, so that it could connect to...
Read more >
Playwright is not running tests on Selenium Grid + Docker
I'm trying to run some Playwright (Node.js) tests on Docker through Selenium Grid, but the tests are failing because of timeout.
Read more >
Selenium Grid 4 + playwright (browser library)
I can't find anything valuable in the logs. I tried to use old selenium (robotframework-seleniumlibrary) test to find out if the problem is...
Read more >
Testing - Improve & Repeat
While preparing the code samples to record videos of my test runs, I run into a severe problem: Selenium Grid cannot do what...
Read more >
Playwright Tutorial: Futuristic Features - LambdaTest
Playwright, by default, runs in the headless mode. Hence when we execute a test, we cannot see the graphical user interface/taskbar. We will...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found