简体   繁体   中英

Selenium version 4.6.0 is throwing HTTP504 error

I have installed selenium 4.6.0 in my local machine which works fine, within company VPN.

Then when I deployed it in our orgs kube.netes cluster (isolateComponents: true) I am getting HTTP 504 for my test cases.

No issues in the chrome node logs

Starting ChromeDriver 107.0.5304.62 (1eec40d3a5764881c92085aaee66d25075c159aa-refs/branch-heads/5304@{#942}) on port 16517
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
[1670230314.770][SEVERE]: bind() failed: Cannot assign requested address (99)
08:51:54.972 INFO [LocalNode.newSession] - Session created by the Node. Id: 28c938ed7495ed7987bd6f37987e6f96, Caps: Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 107.0.5304.87, chrome: {chromedriverVersion: 107.0.5304.62 (1eec40d3a576..., userDataDir: /tmp/.com.google.Chrome.QNhMmk}, goog:chromeOptions: {debuggerAddress: localhost:43699}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: LINUX, proxy: Proxy(), se:cdp: http://localhost:43699, se:cdpVersion: 107.0.5304.87, se:vncEnabled: true, se:vncLocalAddress: ws://192.168.161.159: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}
08:52:02.203 INFO [ProxyNodeWebsockets.createWsEndPoint] - Establishing connection to ws://192.168.161.159:7900

But the router node I can see the below issue:

❯ kubectl logs selenium-router-7458b5ccbd-nb48c
2022-12-05 08:45:30,097 INFO Included extra file "/etc/supervisor/conf.d/selenium-grid-router.conf" during parsing
2022-12-05 08:45:30,100 INFO RPC interface 'supervisor' initialized
2022-12-05 08:45:30,100 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2022-12-05 08:45:30,100 INFO supervisord started with pid 7
2022-12-05 08:45:31,103 INFO spawned: 'selenium-grid-router' with pid 9
Starting Selenium Grid Router...
2022-12-05 08:45:31,106 INFO success: selenium-grid-router entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
Tracing is disabled
08:45:31.432 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
08:45:31.437 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
08:45:32.323 INFO [RouterServer.execute] - Started Selenium Router 4.6.0 (revision 79f1c02ae20): http://192.168.175.198:4444
08:49:55.051 WARN [SimpleDataFetcherExceptionHandler.logException] - Exception while fetching data (/sessionsInfo) : java.net.ConnectException: Connection refused
java.io.UncheckedIOException: java.net.ConnectException: Connection refused
        at org.openqa.selenium.remote.http.jdk.JdkHttpClient.execute(JdkHttpClient.java:284)
        at org.openqa.selenium.remote.tracing.TracedHttpClient.execute(TracedHttpClient.java:55)

I have created the chrome node and router image with the following command for secure ssl connection to my website.

FROM selenium/node-chrome:107.0-chromedriver-107.0
USER root
ADD ssl.crt /usr/local/share/ca-certificates/ssl.crt
RUN update-ca-certificates
USER seluser
FROM FROM selenium/router:4.6.0
USER root
ADD ssl.crt /usr/local/share/ca-certificates/ssl.crt
RUN update-ca-certificates
USER seluser

Not able to understand the issue for the connection refusal, do I need to add proxy details? If so where can I add the same?

The.networking was not the issue as I could curl the url from the chrome node easily without delay. The Issue was proxy, that i had to pass from my client code. I am using serenity and adding the below to the serenity property has no effect

serenity.proxy.http="abcd:1234"
serenity.proxy.sslProxy="abcd:1234"
serenity.proxy.noProxy="localhost,127.0.0.1,192.168.0.0/16,.....l" 

Hence, I had to create a custom class like below

public class CustomCapabilityEnhancer implements BeforeAWebdriverScenario {


    @Override
    public MutableCapabilities apply(EnvironmentVariables environmentVariables, SupportedWebDriver driver, TestOutcome testOutcome, MutableCapabilities capabilities) {
        Proxy proxy = new Proxy();
        proxy.setHttpProxy("abcd:1234");
        proxy.setSslProxy("abcd:1234");
        proxy.setNoProxy("localhost,127.0.0.1,192.168.0.0/16,....");
        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        options.setAcceptInsecureCerts(true);
        capabilities.setCapability(ChromeOptions.CAPABILITY,options);
        return capabilities;    }

    @Override
    public boolean isActivated(EnvironmentVariables environmentVariables) {
        return true;
    }
}
 

and in the serenity property I had to add the package name where the above code reside

serenity.extension.packages=com.mytest.org.application.features.ui.utils

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM