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一个未定义的错误。
我在 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一个未定义的错误。