[英]Instance method raises AttributeError even though the attribute is defined
[英]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.