Как использовать веб-драйвер с импортированными функциями? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть функция, которая открывает сеанс веб-драйвера и затем вызывает внешние функции на основе входного URL.

from externalfunctions import *

def itemiser(url):
regex = re.compile(r'www.(.+).com')
name = regex.search(url).group(1)
options = {
    'a': a,
    'b': b,
    'c': c
}

if name in options:
    ff = webdriver.Firefox()
    ff.get(url)
    result = options[name]()
    ff.quit()
    print(result)
    return result

Функции a, b, c находятся в externalfuntions.py

def a():
    x = ff.find_element_by_css_selector('body')
    return x
def b():
    x = ff.find_element_by_css_selector('span')
    return x
def c():
    x = ff.find_element_by_css_selector('html')
    return x

Когда я запускаю это, он говорит, что ff не определен, очевидно, потому что функции a, b, c не могут получить доступ к веб-драйверу.

Как мне это сделать без запускасеанс вебдрайвера при каждом запуске функций a, b, c.

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Это базовый Python (действительно, базовое программирование). Если функции нужен доступ к чему-либо, вам нужно передать это:

result = options[name](ff)

и

def a(ff):
    x = ff.find_element_by_css_selector('body')
    return x

и т.д.

0 голосов
/ 31 мая 2019

Вам необходимо импортировать библиотеку веб-драйверов (селен) и объявить веб-драйвер:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--test-type")
options.add_argument("window-size=1,1")

driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Users\XXX\chromedriver')

и тогда вы можете использовать:

driver.get(url)
driver.find_element_by_css_selector('html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...