NameError: 全局名称'browser'未定义。
NameError: 全局名称'browser'未定义。
我正在使用Pycharm和Pytest与Selenium Webdriver。我已经设置了一个Initiate driver.py,其中包含以下代码:
om selenium import webdriver from Library import ConfigReader def start_browser(): global browser if (ConfigReader.read_config_data('Details', 'Browser')) =="chrome": browser = webdriver.Chrome('chromedriver') elif (ConfigReader.read_config_data('Details', 'Browser')) =="firefox": browser = webdriver.Firefox('geckodriver') browser.get(ConfigReader.read_config_data('Details', 'Application_URL')) browser.maximize_window() return browser def close_browser(): browser.close()
。 当我运行时,我得到以下错误:
def start_browser(): global browser if (ConfigReader.read_config_data('Details', 'Browser')) =="chrome": browser = webdriver.Chrome('chromedriver') elif (ConfigReader.read_config_data('Details', 'Browser')) =="firefox": browser = webdriver.Firefox('geckodriver') > browser.get(ConfigReader.read_config_data('Details', 'Application_URL')) E NameError: global name 'browser' is not defined
。 我将浏览器设置为全局,因此我不确定为什么会出现这个错误。
admin 更改状态以发布 2023年5月21日
首先,始终尝试避免使用global
关键字。随着代码变得越来越长和复杂,它会导致代码不稳定。
无论如何,您的代码表示未定义全局变量browser
,因为它没有在函数范围之外定义。
删除global
关键字。由于您将browser
返回给函数本身,因此不需要它。
这就是它的样子:
from selenium import webdriver from Library import ConfigReader def start_browser(): if (ConfigReader.read_config_data('Details', 'Browser')) =="chrome": browser = webdriver.Chrome('chromedriver') elif (ConfigReader.read_config_data('Details', 'Browser')) =="firefox": browser = webdriver.Firefox('geckodriver') browser.get(ConfigReader.read_config_data('Details', 'Application_URL')) browser.maximize_window() return browser def close_browser(): start_browser().close()