我有一个功能,可以打开一个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会话。
答案 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
等