mozilla / geckodriver

WebDriver for Firefox
https://firefox-source-docs.mozilla.org/testing/geckodriver/
Mozilla Public License 2.0
7.03k stars 1.51k forks source link

Unable to start geckodriver session with w3c:false in the capabilities #2063

Closed tv2022 closed 1 year ago

tv2022 commented 1 year ago

System

Testcase

Unable to start geckodriver session with w3c:false in the capabilities. Mouse operation like mouse move and drag and drop doesn't work without w3c:false.

Capabilities:

{
    acceptInsecureCerts: true,
    browserName: 'firefox',
    'moz:firefoxOptions': {
        args: ['--ignore-certificate-errors'],
        w3c: false
    }
}

Stacktrace

Driver info: driver.version: unknown
remote stacktrace: 
**org.openqa.selenium.InvalidArgumentException: Invalid moz:firefoxOptions field w3c**
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'CSDFSSLSKDSF', ip: '2600:1700:512', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '11.0.4'
Driver info: driver.version: unknown
remote stacktrace: 
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.grid.session.remote.RemoteSession$Factory.performHandshake(RemoteSession.java:147)
    at org.openqa.selenium.grid.session.remote.ServicedSession$Factory.apply(ServicedSession.java:161)
    at org.openqa.selenium.remote.server.ActiveSessionFactory.lambda$apply$12(ActiveSessionFactory.java:180)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.server.ActiveSessionFactory.apply(ActiveSessionFactory.java:183)
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$2(NewSessionPipeline.java:66)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.Collections$2.tryAdvance(Collections.java:4747)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$3(NewSessionPipeline.java:69)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.DistinctOps$1$2.accept(DistinctOps.java:175)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.stream.Streams$StreamBuilderImpl.tryAdvance(Streams.java:397)
    at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:720)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:72)
    at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65)
    at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:235)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

Trace-level log

NA

tv2022 commented 1 year ago

@whimboo Can you please check this issue?

whimboo commented 1 year ago

First w3c is not a valid capability for moz:firefoxOptions, and second we do not support a non-standard handling anymore. Nevertheless mouse action related methods should not fail. So please attach a trace-level log from geckodriver.

tv2022 commented 1 year ago

@whimboo true without w3c when I try to do drag and drop action or any other mouse actions it throws the below error. It works fine with Selenium 4.6.0 but not with selenium 3.6.0

    const {Builder, By} = require('selenium-webdriver');
    const capabilities = {
      'browserName': 'firefox',
      'moz:firefoxOptions': {
        args: [ '--ignore-certificate-errors' ]
      }
    }
    const driver = await new Builder().withCapabilities(capabilities).build();
    await driver.get('https://material.angular.io/cdk/drag-drop/overview');
    await driver.manage().window().maximize();
    await driver.sleep(5000);
    let src = await driver.findElement(By.xpath(`.//*[text()='Drag&Drop connected sorting']/../..//*[text()='Get to work']`))
    let trg = await driver.findElement(By.xpath(`.//*[text()='Drag&Drop connected sorting']/../..//*[text()='Check e-mail']`));
    console.log(await src.getText());
    await driver
      .actions({async: true})
      .dragAndDrop(src, trg)
      .perform();

I tried this on FF 106.0.5 as well with the latest geckodriver 0.32.0 with Selenium 3.6.0 and it failed with the below error.

error properties: Object({ remoteStacktrace: '' })
WebDriverError: HTTP method not allowed
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at Promise.then (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at Promise.then (<anonymous>)
    at Promise.then (<anonymous>)
From: Task: mouseMove
    at Array.map (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at Promise.then (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at Promise.then (<anonymous>)

Trace log:

trace-log.txt

whimboo commented 1 year ago

@whimboo true without w3c when I try to do drag and drop action or any other mouse actions it throws the below error. It works fine with Selenium 4.6.0 but not with selenium 3.6.0

Is there any reason why you require Selenium 3.6 still? Why cannot you switch to 4.6.0? If it fails with an older Selenium release it seems to be more an issue on that side and not ours and I doubt that this release is still supported. So consider upgrading?

I tried this on FF 106.0.5 as well with the latest geckodriver 0.32.0 with Selenium 3.6.0 and it failed with the below error.


error properties: Object({ remoteStacktrace: '' })
WebDriverError: HTTP method not allowed

Again, this would require a trace log given that it's not clear what HTTP method this is about.

trace-log.txt

Instead of taking screenshots you most likely want to add real assertions to the code so that it's clear what is failing.

Nevertheless I assume that the issue with dragging is identical to what has been reported on issue #1450. Can you please verify? Thanks.

whimboo commented 1 year ago

No further response from reporter. Closing the issue.