4

I'm trying to run chromedriver to create some selenium tests. I followed this manual to install it. I'm trying to run this code:

from selenium import webdriver
driver = webdriver.Chrome(chrome_options=options)

When I call this python script as normal user, it's working. But when I call it as root (it is necessary for me), it's not working. I've tried to follow some advices and I was trying to use several Google chrome options, e.g.:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--no-sandbox')

driver = webdriver.Chrome(chrome_options=options,
                          service_args=[
                              '--verbose',
                              '--log-path=/home/me/Projects/selenium.log'
                          ]
)

But it's still not working and here is a part of log:

[1,001][INFO]: COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [ "--no-sandbox" ],
            "extensions": [  ]
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [ "--no-sandbox" ],
         "extensions": [  ]
      },
      "platform": "ANY",
      "version": ""
   }
}
[1,001][INFO]: Populating Preferences file: {
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "check_default_browser": false
   },
   "distribution": {
      "import_bookmarks": false,
      "import_history": false,
      "import_search_engine": false,
      "make_chrome_default_for_user": false,
      "show_welcome_page": false,
      "skip_first_run_ui": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "profile": {
      "content_settings": {
         "pattern_pairs": {
            "https://*,*": {
               "media-stream": {
                  "audio": "Default",
                  "video": "Default"
               }
            }
         }
      },
      "default_content_setting_values": {
         "geolocation": 1
      },
      "default_content_settings": {
         "geolocation": 1,
         "mouselock": 1,
         "notifications": 1,
         "popups": 1,
         "ppapi-broker": 1
      },
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "translate": {
      "enabled": false
   }
}
[1,001][INFO]: Populating Local State file: {
   "background_mode": {
      "enabled": false
   },
   "ssl": {
      "rev_checking": {
         "enabled": false
      }
   }
}
[1,002][INFO]: Launching chrome: /opt/google/chrome/google-chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-infobars --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-logging --ignore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.3rN146/internal --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12613 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.dOwaRR data:,
[1,002][DEBUG]: DevTools request: http://localhost:12613/json/version
[8523:8523:0216/145622.514842:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

The strange is, that in the InitSession command there is --no-sandbox argument, but when the Chrome is launched, it's not. The error Running as root without --no-sandbox is not supported. shows up instead.

Any advice please?

Honza
  • 939
  • 2
  • 11
  • 28
  • 1
    Running Chrome with `--user-data-dir` might help. Source: https://unix.stackexchange.com/questions/175967/how-to-run-google-chrome-as-root-in-linux. Running graphical applications as root is rather unsafe in Linux tho. Most linux window systems (like X for example) use no security mechanisms to validate requests from programs. – BoboDarph Feb 16 '18 at 14:09
  • why do you *need* to run as root? that sounds like the problem to address rather than asking for a workaround. – Corey Goldberg Feb 16 '18 at 15:45
  • Thank you, I've tried `--user-data-dir` before,and it's not working. I know it's unsafe to run it as root, but it's necessary because of the way we initialize the projects in our company (it's not up to me). And it's strictly for local development,only for myself.And the reason is,that the project source codes are in `/apps/` directory and I have to run PyCharm as root to edit files.The tests are then run from PyCharm,which is launched as root,so the chromedriver is launched as root too. – Honza Feb 17 '18 at 22:56

1 Answers1

6

The problem was in chromedriver version. I used version 2.26. After reinstallation to current version (2.35), it starts to work. So, there is only one mandatory argument --no-sandbox and everything is working now. Thank you again.

Honza
  • 939
  • 2
  • 11
  • 28