Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python selenium驱动程序实例未定义,即使实例由方法返回_Python_Selenium_Selenium Webdriver_Firefox_Selenium Firefoxdriver - Fatal编程技术网

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

Python selenium驱动程序实例未定义,即使实例由方法返回,python,selenium,selenium-webdriver,firefox,selenium-firefoxdriver,Python,Selenium,Selenium Webdriver,Firefox,Selenium Firefoxdriver,我在Python3.7中与Firefox和gecko驱动程序一起使用Selenium。我有一个方法调用另一个方法来登录站点。log-in方法创建驱动程序实例,登录并返回驱动程序实例。原来的方法应该继续,但是我得到一个错误“driver”没有定义。我做了一些研究,几乎可以说,我做的一切都是对的。以下是我所拥有的,我只是剪切了很多页面: def navigate(): login() driver.get("http://www.example.com") def login():

我在Python3.7中与Firefox和gecko驱动程序一起使用Selenium。我有一个方法调用另一个方法来登录站点。log-in方法创建驱动程序实例,登录并返回驱动程序实例。原来的方法应该继续,但是我得到一个错误
“driver”没有定义
。我做了一些研究,几乎可以说,我做的一切都是对的。以下是我所拥有的,我只是剪切了很多页面:

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时,会显示驱动程序未定义。我不知道我做错了什么。我不知道为什么它说驱动程序没有定义


编辑:我刚刚发现,如果我把驱动程序设为全局,它会工作的,但为什么不返回它呢?我不需要它是全球性的。

因为你没有发布你的代码,它只能是一个猜测。。。但是,听起来好像您只是没有将返回的对象分配给
驱动程序
变量

该问题存在于您提供的不完整代码中,它应该如下所示:

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
对象


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

不要发布伪代码,并期望我们通过猜测来找出它。发布您正在使用的实际代码,并附上一条实际的错误消息或至少是一些不起作用的描述。好吧,这是代码,只是所有导航到登录的页面都被删除了,因为它很长,与问题无关。我可能不应该把它称为伪代码。我可以看出这是多么误导。我确实提到了这个错误,我只是没有把它放在代码块中:
没有定义“driver”
啊,就是这样。我可能不该称之为伪代码。这是我的代码,只是删除了许多不必要的部分,这些部分与问题无关。我确实得到了一个未定义的错误,当我在OP中提到它时,我只是没有把它放在代码块上。