即使通过方法返回实例,也未定义Python硒驱动程序实例

问题描述 投票:0回答:1

我正在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时,它说未定义驱动程序。我不知道自己在做什么错。我不确定为什么会说未定义驱动程序。

编辑:我只是发现如果使驱动程序全局化,它将起作用,但是为什么不返回它就起作用呢?我不必一定要具有全球性。

python selenium selenium-webdriver firefox selenium-firefoxdriver
1个回答
0
投票

因为您没有发布代码,所以只能猜测...但是,听起来您只是没有将返回的对象分配给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()对象。

很奇怪,您没有得到/注意到一个未定义的错误。

© www.soinside.com 2019 - 2024. All rights reserved.