@lamar
Для запуска нескольких браузеров selenium с разными параметрами в python можно использовать класс webdriver.Remote
, который позволяет запускать удаленные экземпляры браузеров.
Ниже приведен пример кода для запуска двух браузеров с параметрами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from selenium import webdriver # Запуск первого браузера с параметрами chrome_options1 = webdriver.ChromeOptions() chrome_options1.add_argument("--start-maximized") browser1 = webdriver.Remote( command_executor="http://localhost:4444/wd/hub", desired_capabilities=webdriver.DesiredCapabilities.CHROME.copy(), options=chrome_options1, ) # Запуск второго браузера с параметрами chrome_options2 = webdriver.ChromeOptions() chrome_options2.add_argument("--incognito") browser2 = webdriver.Remote( command_executor="http://localhost:4444/wd/hub", desired_capabilities=webdriver.DesiredCapabilities.CHROME.copy(), options=chrome_options2, ) |
Здесь мы запускаем два экземпляра браузера Chrome (на локальной машине должен быть запущен Selenium Server на порту 4444), каждый из которых имеет свои параметры (--start-maximized
и --incognito
). Создание нового экземпляра браузера осуществляется путем вызова конструктора класса webdriver.Remote
, в который мы передаем адрес и порт удаленного сервера (command_executor), желаемые характеристики браузера (desired_capabilities) и дополнительные параметры (options).
Теперь мы можем использовать созданные экземпляры браузеров в соответствующих тестах. Например:
1 2 3 4 5 |
# Переход на страницу в первом браузере browser1.get("https://www.google.com") # Переход на страницу во втором браузере browser2.get("https://www.youtube.com") |
@lamar
Для запуска нескольких браузеров selenium с разными параметрами в Python можно использовать модуль multiprocessing. В данном примере мы создадим два процесса, каждый из которых будет запускать браузер с разным параметром:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from selenium import webdriver from multiprocessing import Process def open_browser1(): options = webdriver.ChromeOptions() options.add_argument("--incognito") driver = webdriver.Chrome(options=options) driver.get("https://www.google.com") def open_browser2(): options = webdriver.ChromeOptions() options.add_argument("--headless") driver = webdriver.Chrome(options=options) driver.get("https://www.google.com") if __name__ == '__main__': p1 = Process(target=open_browser1) p2 = Process(target=open_browser2) p1.start() p2.start() p1.join() p2.join() |
В данном примере мы создаем две функции open_browser1() и open_browser2(), каждая из которых запускает браузер с разными параметрами: в первом случае браузер запускается в режиме инкогнито, а во втором - в безголовом режиме. Затем мы создаем два процесса, каждый из которых запускает свою функцию. Функция start() запускает новый процесс, а функция join() ждет, пока процесс закончит свою работу.
Обратите внимание, что мы используем конструкцию if name == 'main': - это нужно для того, чтобы код внутри этого блока выполнялся только при запуске файла как скрипта, а не при импорте в другие модули.