3

I'm using Selenium Grid to run some automated tests that always worked locally. I've created a RemoteWebDriver object, and used remoteDriver.setFileDetector(new LocalFileDetector()) to activate the local file detector. All of the pages I can find list this as the only solution, as if nothing can possibly go wrong with it.

In summary, selenium is definitely uploading the files from my local Windows filesystem, to Selenium Grid running on Linux. GeckoDriver can find it just fine, but ChromeDriver says it's not found:

invalid argument: File not found : /tmp/41dd2016f9974950127c20f7d25df461/upload7388365119198958794file/hasThemesWithImages.zip
  (Session info: headless chrome=109.0.5414.74)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'PAX-314945', ip: '192.168.50.241', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.16.1'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 109.0.5414.74, chrome: {chromedriverVersion: 109.0.5414.74 (e7c5703604da..., userDataDir: /tmp/.org.chromium.Chromium...}, goog:chromeOptions: {debuggerAddress: localhost:39795}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), 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, webdriver.remote.sessionid: 41dd2016f9974950127c20f7d25...}
Session ID: 41dd2016f9974950127c20f7d25df461

If I ssh to the remote host while it's still running, and type ls -l and paste in that long pathname, then I see the file is present. It's the correct size, and has global read permissions. I can even examine the zip contents. And yet, chromedriver gives the error above.

I started the grid server with a very simple java -jar selenium-server-standalone-3.141.59.jar command, with no other options, and am using Chromium in headless mode.

I have tried starting Chromium with and without --no-sandbox and --disable-dev-shm-usage as command line options.

I'm using Geb 3.4.1 and Groovy 2.x on the client side, and it looks like I'm doing everything correctly. I tried a few different tests that worked locally before, and added some logging in the test to confirm that driver.getFileDetector() returned the LocalFileDetector instance. Here is the relevant portion of my GebConfig.groovy file:

def remoteWebDriver(Capabilities capabilities) {
    URL hubUrl = new URL("http://192.168.1.5:4444/wd/hub")
    new RemoteWebDriver(hubUrl, capabilities)
}

FirefoxProfile myFirefoxProfile() {
    // omitted; I hope it's not important.
}

environments {
    gridFirefox { // file uploads work
        driver = {
            println "creating a RemoteDriver"
            FirefoxOptions opts = new FirefoxOptions()
            opts.addArguments("--headless")
            opts.profile = myFirefoxProfile()
            RemoteWebDriver remoteDriver = remoteWebDriver(opts)
            remoteDriver.setFileDetector(new LocalFileDetector())
            remoteDriver
        }
    }
    gridChrome { // file uploads don't work
        driver = {
            println "creating a Chrome RemoteDriver"
            ChromeOptions chrome_options = new ChromeOptions()
            chrome_options.addArguments("--window-size=1600,1100")
            chrome_options.addArguments('--headless')
            //chrome_options.addArguments('--no-sandbox')
            //chrome_options.addArguments('--disable-dev-shm-usage')
            RemoteWebDriver remoteDriver = remoteWebDriver(chrome_options)
            remoteDriver.setFileDetector(new LocalFileDetector())
            remoteDriver
        }
    }
}
kriegaex
  • 63,017
  • 15
  • 111
  • 202
  • Your decription is really good, but maybe it would be helpful to also show your Geb test., ideally even a complete, minimal reproducer project on GitHub. It is kind of difficult to debug invisible code, and you are more likely to get answers if the people trying to help you do not have to create their own project from sctratch. – kriegaex Jan 26 '23 at 10:23
  • It has been a month and you did not respond to my request for an [MCVE](https://stackoverflow.com/help/mcve) or at least the Geb test code. If this issue is no longer relevant for you, then please just delete the question. Thank you. – kriegaex Feb 24 '23 at 08:34

0 Answers0