Как я могу сохранить селен вебдрайвер? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь написать тест на селен в python, где мне нужно запустить веб-драйвер селена и сохранить этот драйвер живым, чтобы его можно было вызывать в других функциях (defs) для получения веб-страниц.

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

Любые предложения / идеи будут высоко оценены, спасибо всем.

ОБНОВЛЕНИЕ

Ниже приведен пример кода, иллюстрирующий то, чего я пытаюсь достичь. В идеале я хотел бы, чтобы chromedriver оставался открытым между двумя вызовами функций, чтобы избежать необходимости срывать его и перезапускать chromedriver, который занимает много времени, если у вас есть несколько (более 50) вызовов функций.

def chromedriver_function(url):    
    # Start Webdriver
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument("--disable-gpu")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    driver = webdriver.Chrome(chrome_options=options, executable_path="/opt/chromedriver")

    driver.get(url)

    return driver.page_source

def function1()
    ... do something
    chromedriver_function("http://www.example.com")

def function2()
    ... do something
    chromedriver_function("http://www.mysecondpage.com") 

1 Ответ

2 голосов
/ 29 марта 2020

Просто создайте драйвер и верните его значение. Затем вызовите вашу функцию, используя это значение в качестве параметра

def create_driver():
        options = webdriver.ChromeOptions()
        options.add_argument('--headless')
        options.add_argument("--disable-gpu")
        options.add_argument("--no-sandbox")
        options.add_argument("--disable-dev-shm-usage")
        driver = webdriver.Chrome(chrome_options=options, executable_path="/opt/chromedriver")
        return driver

def chromedriver_function(url):    
    # Do whatever you want here

    driver.get(url)

    return driver.page_source

def function1(driver)
    ... do something
    chromedriver_function("http://www.example.com")

def function2(driver)
    ... do something
    chromedriver_function("http://www.mysecondpage.com") 

И вызовите ваши функции следующим образом:

driver = create_driver()
function1(driver)
function2(driver)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...