我正在Firefox和gecko驱动程序中的Python 3.7中使用Selenium。我有一个方法可以调用另一种方法来登录站点。登录方法创建一个驱动程序实例,登录并返回该驱动程序实例。然后应该继续使用原始方法,但是我得到一个错误,即未定义驱动程序。我已经做了一些研究,并且据我所知,我所做的一切都正确。这是我所拥有的要点:
def navigate():
login()
driver.get("http://www.example.com")
def login():
driver = webdriver.Firefox(executable_path="./geckodriver.exe")
...(login code here)
return driver
上面是psuedocode,但一般来说我的方法如何。调用Navigation方法时,Firefox会打开并正常登录,但是转到示例URL时,它说未定义驱动程序。我不知道自己在做什么错。我不确定为什么会说未定义驱动程序。
编辑:我只是发现如果使驱动程序全局化,它将起作用,但是为什么不返回它就起作用呢?我不必一定要具有全球性。
因为您没有发布代码,所以只能猜测...但是,听起来您只是没有将返回的对象分配给driver
变量。
该问题出现在您提供的不完整代码中,应该看起来像:
def navigate():
driver = login()
driver.get("http://www.example.com")
def login():
driver = webdriver.Firefox(executable_path="./geckodriver.exe")
...(login code here)
return driver
这里的变化是现在driver
被分配了返回的login()
对象的值。在将driver
设置为全局变量时可以使用它,因为navigate()
函数可以从driver
中看到login()
对象。
很奇怪,您没有得到/注意到一个未定义的错误。