如何将Webdriver与导入的功能一起使用?

时间:2019-05-31 07:03:07

标签: django python-3.x selenium

我有一个功能,可以打开一个webdriver会话,然后根据输入的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函数无法访问Webdriver。

如何做到这一点,而不必在每次运行a,b,c函数时都启动Webdriver会话。

2 个答案:

答案 0 :(得分:0)

您需要导入webdriver库(硒)并声明webdriver:

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')

答案 1 :(得分:0)

这是基本的Python(实际上是基本的编程)。如果某个功能需要访问某些内容,则需要传递它:

result = options[name](ff)

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