Как запустить несколько браузеров selenium с разными параметрами в python?

Пользователь

от lamar , в категории: Другие , 2 года назад

Как запустить несколько браузеров selenium с разными параметрами в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vicenta_kertzmann , год назад

@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")


Пользователь

от greyson , год назад

@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': - это нужно для того, чтобы код внутри этого блока выполнялся только при запуске файла как скрипта, а не при импорте в другие модули.