Python selenium 驱动程序实例未定义,即使实例由方法返回

Python selenium driver instance not defined even though instance is returned by method

我在 Python 3.7 中将 Selenium 与 Firefox 和 gecko 驱动程序一起使用。我有一种方法调用另一种方法来登录站点。登录方法创建一个驱动程序实例,登录,然后 returns 驱动程序实例。然后应该继续使用原始方法,但我收到错误 'driver' is not defined。我做了一些研究,据我所知,我做的一切都是对的。这是我的,我只是删掉了很多页面导航:

def navigate():
   login()
   driver.get("http://www.example.com")

def login():
   driver = webdriver.Firefox(executable_path="./geckodriver.exe")
   ...(login code here)
   return driver

当调用 navigate 方法时,Firefox 打开并正常登录,但是当转到示例 URL 时,它说驱动程序未定义。我不知道我做错了什么。我不确定为什么它说驱动程序未定义。

编辑:我刚刚发现如果我将驱动程序设置为全局它会起作用,但为什么返回它不起作用?我不一定需要它是全球性的。

因为您没有 post 您的代码,所以它只能是一个猜测...但是,听起来您只是没有将返回的对象分配给您的 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() 函数就可以看到来自 login().

driver 对象

很奇怪你没有get/notice一个未定义的错误。