繁体   English   中英

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

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

我在 Python 3.7 中使用 Selenium 和 Firefox 和 gecko 驱动程序。 我有一种方法可以调用另一种方法来登录站点。 登录方法创建一个驱动程序实例,登录并返回驱动程序实例。 然后应该继续使用原始方法,但我收到错误'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

调用导航方法时,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()函数可以从login()看到driver对象。

奇怪的是您没有收到/注意到未定义的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM