Как управлять двумя профилями Google Chrome, используя Селен Python одновременно? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь управлять двумя экземплярами Google Chrome, используя два разных профиля.Но когда я открываю первый профиль, а затем запускаю второй экземпляр Chrome с другим, я получаю ошибки.

from selenium import webdriver


def launch(login, password):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(r'--user-data-dir=/home/marek/.config/google-chrome')
    chrome_options.add_argument(r'--profile-directory=Profile 3')
    second_options = webdriver.ChromeOptions()
    second_options.add_argument(r'--user-data-dir=/home/marek/.config/google-chrome')
    second_options.add_argument(r'--profile-directory=Profile 4')
    driver = webdriver.Chrome(options = chrome_options)
    second_driver = webdriver.Chrome(options = second_options)
    driver.get('http://google.com')
    second_driver.get('http://google.com')

if __name__ == '__main__':
    login = 'xxx'
    password = 'xxx'
    launch(login,password)

Журналы ошибок:

  File "auto.py", line 19, in <module>
    launch(login,password)
  File "auto.py", line 11, in launch_draw
    driver = webdriver.Chrome(options = chrome_options)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38),platform=Linux 4.19.23-1-MANJARO x86_64)

Есть идеи, как заставить это работать?

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Google в приведенной ниже статье заявляет, что вы вошли в несколько учетных записей Google одновременно, Google может не определить, в какую учетную запись вы вошли.Я думаю, что решение будет состоять в том, чтобы выйти из одной учетной записи, прежде чем войти в другую, или использовать какой-то метод разделения файлов cookie между двумя сеансами.Эта статья Google может помочь вам:

https://support.google.com/accounts/answer/1721977?co=GENIE.Platform%3DDesktop&hl=en

0 голосов
/ 03 марта 2019

Я полагаю, что вы можете сделать это без необходимости сетки.Попробуйте добавить следующий аргумент в ChromeOptions:

--disable-dev-shm-usage
0 голосов
/ 03 марта 2019

Selenium Grid поможет вам масштабироваться, выполняя параллельные тесты.Просто настройте концентратор и узел с помощью следующих команд:

Для концентратора

java -jar selenium-server-standalone-3.14.0.jar -role hub

и для узла

java -jar selenium-server-standalone-3.14.0.jar -role node  -hub http://localhost:4444/grid/register
...