Selenium - Google Chrome: Status code was: -5

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

Hallo!

Ich nutze odoo 17 als Warenwirtschaft und möchte über Python Webseiten laden. Da manches erst nach der Anzeige gerendert wird, muss ich Selenium nutzen. Bekomme es aber nicht zum laufen.
Ich denke es liegt an einer Inkompatibilität oder ein Berechtigungsproblem. Google Chrom 114 habe ich manuell installiert, da für Selenium es keinen neueren Treiber gibt.
Alles wird mit dem user odoo ausgeführt.
Es wird auch kein Log in /tmp/ angelegt. Schreibrechte hat odoo

Mein Codeschnippel:

Code: Alles auswählen

        # Chrome-Optionen für Selenium (ohne UI)
        options = webdriver.ChromeOptions()
        options.add_argument("--headless")
        options.add_argument("--disable-gpu")
        options.add_argument("--no-sandbox")
        options.add_argument("--disable-dev-shm-usage")


        service = Service(
            ChromeDriverManager().install(),
            log_path="/tmp/chromedriver.log",  # Speichere die Logs hier
            service_args=["--verbose", "--log-path=/tmp/chromedriver_detailed.log"]  # Ausführliche Logs
        )
        driver = webdriver.Chrome(service=service)
        driver.get("https://www.google.com")
        self.logger(driver.title)
Bei Zeile driver = webdriver.Chrome(service=service) schmeißt er den Fehler

Code: Alles auswählen

root@odoo17:/tmp# google-chrome --version
Google Chrome 114.0.5735.90

Code: Alles auswählen

root@odoo17:/tmp# /odoo/.wdm/drivers/chromedriver/linux64/114.0.5735.90/chromedriver --version
ChromeDriver 114.0.5735.90 (386bc09e8f4f2e025eddae123f36f6263096ae49-refs/branch-heads/5735@{#1052})

Code: Alles auswählen

root@odoo17:/tmp# sudo apt-get update
sudo apt-get install -y libnss3 libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 libx11-xcb1
OK:1 http://at.archive.ubuntu.com/ubuntu jammy InRelease
OK:2 http://at.archive.ubuntu.com/ubuntu jammy-updates InRelease
Holen:3 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
OK:4 http://at.archive.ubuntu.com/ubuntu jammy-backports InRelease
Holen:5 https://dl.google.com/linux/chrome/deb stable InRelease [1.825 B]
OK:6 http://security.ubuntu.com/ubuntu focal-security InRelease
OK:7 http://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease
Holen:9 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1.219 B]
OK:8 http://mirrors.edge.kernel.org/ubuntu xenial InRelease
Es wurden 132 kB in 1 s geholt (116 kB/s).
Paketlisten werden gelesen… Fertig
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
libatk-bridge2.0-0 ist schon die neueste Version (2.38.0-3).
libatk-bridge2.0-0 wurde als manuell installiert festgelegt.
libatk1.0-0 ist schon die neueste Version (2.36.0-3build1).
libgconf-2-4 ist schon die neueste Version (3.2.6-7ubuntu2).
libnss3 ist schon die neueste Version (2:3.98-0ubuntu0.22.04.2).
libx11-xcb1 ist schon die neueste Version (2:1.7.5-1ubuntu0.3).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 17 nicht aktualisiert.

Code: Alles auswählen

2024-11-22 09:18:48,503 76075 INFO odoo17_live WDM: ====== WebDriver manager ======
2024-11-22 09:18:49,118 76075 INFO odoo17_live WDM: Get LATEST chromedriver version for google-chrome
2024-11-22 09:18:49,410 76075 INFO odoo17_live WDM: About to download new driver from https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip
2024-11-22 09:18:49,674 76075 INFO odoo17_live WDM: Driver downloading response is 200
2024-11-22 09:18:50,689 76075 INFO odoo17_live WDM: Get LATEST chromedriver version for google-chrome
2024-11-22 09:18:51,410 76075 INFO odoo17_live WDM: Get LATEST chromedriver version for google-chrome
2024-11-22 09:18:51,967 76075 INFO odoo17_live WDM: Driver has been saved in cache [/odoo/.wdm/drivers/chromedriver/linux64/114.0.5735.90]
2024-11-22 09:18:52,154 76075 ERROR odoo17_live odoo.http: Exception during request handling.
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/http.py", line 2192, in __call__
    response = request._serve_db()
  File "/odoo/odoo-server/odoo/http.py", line 1768, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/odoo/odoo-server/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/odoo/odoo-server/odoo/http.py", line 1795, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/odoo/odoo-server/odoo/http.py", line 1999, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/odoo/odoo-server/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
    result = endpoint(**request.params)
  File "/odoo/odoo-server/odoo/http.py", line 725, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/odoo/odoo-server/addons/web/controllers/dataset.py", line 28, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/odoo/odoo-server/addons/web/controllers/dataset.py", line 20, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/odoo/odoo-server/odoo/api.py", line 468, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/odoo/odoo-server/odoo/api.py", line 453, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/odoo/custom/addons/import_contact_products/hanhoe_import_product_from_url/models/product_template.py", line 82, in action_update_product
    page_content = self.fetch_product_data(product.product_url)
  File "/odoo/custom/addons/import_contact_products/hanhoe_import_product_from_url/models/product_template.py", line 134, in fetch_product_data
    driver = webdriver.Chrome(service=service)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__
    super().__init__(
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chromium/webdriver.py", line 55, in __init__
    self.service.start()
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/common/service.py", line 108, in start
    self.assert_process_still_running()
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/common/service.py", line 121, in assert_process_still_running
    raise WebDriverException(f"Service {self._path} unexpectedly exited. Status code was: {return_code}")
selenium.common.exceptions.WebDriverException: Message: Service /odoo/.wdm/drivers/chromedriver/linux64/114.0.5735.90/chromedriver unexpectedly exited. Status code was: -5
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

Ich bin einen Schritt weiter:
Beispielcode als Standalone:

Code: Alles auswählen

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

# ChromeDriver-Dienst
service = Service("/odoo/.wdm/drivers/chromedriver/linux64/114.0.5735.90/chromedriver")

# Chrome-Optionen
options = Options()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--disable-software-rasterizer")

# ChromeDriver direkt starten
driver = webdriver.Chrome(service=service, options=options)

# Beispiel: Google öffnen
driver.get("https://www.google.com")
print(driver.title)

# WebDriver schließen
driver.quit()
es klappt mit sudo:

Code: Alles auswählen

odoo@odoo17:/tmp$ sudo python3 test.py
Google
aber nicht ohne:

Code: Alles auswählen

odoo@odoo17:/tmp$ python3 test.py
Traceback (most recent call last):
  File "/tmp/test.py", line 16, in <module>
    driver = webdriver.Chrome(service=service, options=options)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__
    super().__init__(
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chromium/webdriver.py", line 66, in __init__
    super().__init__(command_executor=executor, options=options)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 238, in __init__
    self.start_session(capabilities)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 325, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 380, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:
#0 0x5653069874e3 <unknown>
#1 0x5653066b6c76 <unknown>
#2 0x5653066dfd78 <unknown>
#3 0x5653066dc029 <unknown>
#4 0x56530671accc <unknown>
#5 0x56530671a47f <unknown>
#6 0x565306711de3 <unknown>
#7 0x5653066e72dd <unknown>
#8 0x5653066e834e <unknown>
#9 0x5653069473e4 <unknown>
#10 0x56530694b3d7 <unknown>
#11 0x565306955b20 <unknown>
#12 0x56530694c023 <unknown>
#13 0x56530691a1aa <unknown>
#14 0x5653069706b8 <unknown>
#15 0x565306970847 <unknown>
#16 0x565306980243 <unknown>
#17 0x7fa2be0b6ac3 <unknown>
odoo läuft als normaler user odoo. Weiß jemand wie ich die Berechtigung richtig stellen kann?
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

So, hab das Problem gelöst, indem ich Selenium als eigenständiges Programm laufen lassen und von Odoo mit einer API darauf zugreife.
Das klappt nun
Antworten