Запуск нескольких веб-браузеров одновременно Selenium Python 3 - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь открыть сразу несколько chrome драйверов и сделать так, чтобы он работал как можно быстрее. Он открывает первую страницу и должен полностью загрузиться, прежде чем вторая функция будет выполнена с "browser_2".
Есть ли способ заставить эти функции загружаться одновременно?

уведомление - я скрываю "Proxy_list" от своего поста, чтобы защитить эти ips для этого поста.

browser_1 = 0
browser_2 = 1
browser_3 = 2
browser_4 = 3
browser_5 = 4
browser_6 = 5
browser_7 = 6
browser_8 = 7
browser_9 = 8
browser_10 = 9
Link_1 = "https://www.google.com"

session_list = [browser_1, browser_2, browser_3, browser_4, browser_5, browser_6, browser_7, browser_8, browser_9, browser_10]



def create_browser(browser):
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=%s' % (Proxy_list[browser]))
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    print("opening session #" + str(browser+ 1))
    # Defines Browser
    browser = webdriver.Chrome(options=options)
    browser.get(Link_1)
    return browser


create_browser(browser_1)
create_browser(browser_2)
create_browser(browser_3)
create_browser(browser_4)
create_browser(browser_5)

1 Ответ

0 голосов
/ 07 февраля 2020

Вот пример кода.

Я пытался, и он будет открывать несколько браузеров одновременно.

from selenium import webdriver
from multiprocessing import Process, Pipe, Pool

def create_browser(num):
    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    # Defines Browser
    browser = webdriver.Chrome(options=options)
    browser.get('https://mail.google.com/')

    return browser


pool = Pool(processes=10)  # Maximum number of browsers opened at same time

for i in range(0, 5):  # Five browsers will be created
    async_result = pool.apply_async(create_browser, args=(i))

pool.close()
pool.join()

Обновлено:

Вы можете передать параметр, как показано ниже.

def test_function(x, y, z=0):
    # do something

...

async_result = pool.apply_async(test_function, args=(1, 2), kwds={'z':3})  # x=1, y=2, z=3

В вашем случае:

session_list = [browser_1, browser_2, browser_3, browser_4, browser_5, browser_6, browser_7, browser_8, browser_9, browser_10]

pool = Pool(processes=10)  # Maximum number of browsers opened at same time

for i in range(0, len(session_list)):  # Ten browsers will be created
    async_result = pool.apply_async(create_browser, args=(session_list[i]))

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