Как запустить несколько драйверов Selenium параллельно? - PullRequest
1 голос
/ 12 января 2020

Как я могу запустить несколько драйверов селен параллельно для входа в инстаграм, используя ввод текстовых файлов (электронная почта: формат пароля).

Я хотел бы открыть n драйверов и сделать паралельно каждому из них: их, а не по одному.

Я пробовал многопоточность, но он просто застрял при обновлении того же драйвера селена (может быть, я сделал это неправильно).

Стоит ли использовать многопоточность или многопроцессорность?

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

executable_path = "chromedriver.exe"
options = Options()
options.add_argument("--start-maximized")
driver = webdriver.Chrome(executable_path=executable_path, options=options)
file = open("list.txt", "r")
for line in file:
    pieces = line.split(":")
    myemail = pieces[0]
    mypass = pieces[1]
    driver.get('https://www.instagram.com/accounts/login/')
    time.sleep(5)
    element = driver.find_elements_by_css_selector('form input')[0]
    element.send_keys(myemail)
    element1 = driver.find_elements_by_css_selector('form input')[1]
    element1.send_keys(mypass)

Ответы [ 2 ]

0 голосов
/ 13 января 2020
0 голосов
/ 12 января 2020

Не уверен, как это должно быть на Python), но на C# это будет выглядеть так:

private IWebDriver GetSeleniumDriver()
{
    return new ChromeDriver(ChromeDriverService.CreateDefaultService(), new ChromeOptions());
}

...

var listDrivers = new List<IWebDriver>();
listDrivers.Add(GetSeleniumDriver());
// you can create as many as you want

Вы должны сохраняйте ссылки в каждом экземпляре и просто переключайтесь между ними.

Parallel.ForEach(listDrivers, driver =>
{
   // do what you want
});

Я считаю, что идея должна быть одинаковой на Python.

...