2015-02-14 3 views
2

Я повторяю список ссылок для скрипирования экрана. На страницах есть JavaScript, поэтому я использую Selenium. У меня есть определенная функция для получения источника для каждой страницы.Где я могу создать экземпляр экземпляра WebDriver при циклировании?

  1. Должен ли я создать экземпляр WebDriver внутри этой функции, которая будет происходить один раз за цикл?

  2. Должен ли я создать экземпляр вне функции и передать номер WebDriver?

  3. Или присвойте WebDriver переменной, которая будет видна внутри функции, без явно переданного ею?

+0

Ваш исходный вопрос не подходит для SO. Вы вообще спрашивали о библиотеках. То, что вы должны или можете сделать, будет варьироваться от библиотеки к библиотеке и в зависимости от того, что вы пытаетесь сделать. В своем первоначальном виде ваш вопрос был слишком широким и основанным на мнениях, что привело бы к закрытию. – Louis

ответ

1

Каждая конкретизация WebDriver запускает новый браузер, который является очень дорогостоящей операцией, поэтому вариант-не то, что вы хотите сделать.

Я бы тоже не сделал вариант 3, потому что это не хорошая практика кодирования, зависящая от глобальных переменных, когда ее можно легко избежать.

Это дает вам вариант 2: создать экземпляр WebDriver один раз и передать экземпляр вашим функциям.

+0

Спасибо за редактирование Луи. Поэтому вариант 2 будет выглядеть примерно так: '' ' четкость FUNC (URL, D): d.get (URL) SRC = d.page_source # делать вещи возвращения (результат) драйвера = WebDriver. Chrome() для i в списке: func (i, driver) '' ' – user2014160

+0

Bleah, извините, разрывы строк не отображаются. – user2014160

+0

Спасибо за редактирование Луи. Поэтому вариант 2 будет выглядеть примерно так: четкости FUNC (URL, d): d.get (URL) SRC = d.page_source # делать вещи возвращение (результат) драйвер = webdriver.Chrome() для i в списке: func (i, driver) – user2014160