python с использованием селена, ошибка: chrome неожиданно завершился. Код состояния был: 0 - PullRequest
1 голос
/ 03 августа 2020

Это не репост

selenium.common.exceptions.WebDriverException: сообщение: неизвестная ошибка: Chrome не удалось запустить: сбой с ChromeDriver и Selenium в Python

Я использую Linux, и создание нового профиля не вариант . Я хочу загрузить существующий профиль (не создавать новый), как может селен gui.

Я могу заставить работать хром, но не google chrome. Chrome откроется, но выдаст ошибку

selenium.common.exceptions.WebDriverException: Message: Service /opt/google/chrome/chrome unexpectedly exited. Status code was: 0

.

Я пытаюсь запустить Google chrome с доступом к каталогу пользователя, поэтому я могу записать существующие сеансы.

код, который не работает:

option.add_argument("user-data-dir=/home/user/.config/google-chrome/Default/") #)PATH is path to your chrome profile
driver = webdriver.Chrome('/opt/google/chrome/chrome', options=option)

код, который работает, но запускает хром, а не google-chrome:

option.add_argument("user-data-dir=/home/user/snap/chromium/common/.cache/chromium/Default/") #)PATH is path to your>
driver = webdriver.Chrome('/snap/bin/chromium.chromedriver', options=option)

Я уверен, что использую правильный исполняемый файл

htop

I'm pretty sure I have the correct chromedriver driver install

root@Inspiron-laptop:/home/user# pip3 install chromedriver-autoinstaller
Requirement already satisfied: chromedriver-autoinstaller in /usr/local/lib/python3.8/dist-packages (0.2.2)

Just using it incorrectly.

How do I launch google-chrome from within selenium while accessing cache directories?

I am on Ubuntu 20.04

UPDATE:

Full script:

#!/usr/bin/python3

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from seleniumbase import BaseCase
from selenium.webdriver.chrome.options import Options
import time
import random

minptime = 25
maxptime = 120

class MyweClass(BaseCase):
        def method_a():
                option = webdriver.ChromeOptions()
                option.add_argument('--disable-notifications')
                option.add_argument("--mute-audio")
                option.add_argument("user-data-dir=/home/user/.config/google-chrome/Default/") #)PATH is path to your chrome profile
                driver = webdriver.Chrome('/opt/google/chrome/chrome', options=option)
                driver.get("https://world.com/myworld")
                print(f'driver.command_executor._url: {driver.command_executor._url}')
                print(f'driver.session_id: {driver.session_id}')
                time.sleep(18)
                return driver
driver = MyweClass.method_a()

UPDATE II:

Same error using

option.add_argument("user-data-dir=~/.config/google-chrome/Default/")

and

driver = webdriver.Chrome('/opt/google/chrome/google-chrome', options=option)

and

chmod -R 777 /home/user/.config

To ensure user was hitting cache directory as user.

Google chrome info:

введите описание изображения здесь

1 Ответ

0 голосов
/ 03 августа 2020

Правило большого пальца

Частая причина, по которой Chrome сгорает sh во время запуска, работает Chrome как root пользователь (administrator) на Linux. Хотя эту проблему можно обойти, передав флаг --no-sandbox при создании сеанса WebDriver, такая конфигурация не поддерживается и настоятельно не рекомендуется. Вам необходимо настроить среду для запуска Chrome от имени обычного пользователя.

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.15.0-109-generic x86_64)

... означает, что ChromeDriver не смог инициировать / создать новый Контекст просмотра т.е. Chrome Браузер сеанс.

В соответствии с вашими пробными кодами кажется, что вы пытаетесь получить доступ к Chrome профилю , поэтому вы можете использовать следующие решение:

  • Блок кода:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("user-data-dir=C:\\path\\to\\your\\profile\\Google\\Chrome\\User Data\\Profile 2")
    driver = webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe', chrome_options=options)
    driver.get("https://www.google.co.in")
    

Ссылки

Вы можете найти несколько подробных обсуждений в:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...