NameError: 全局名称'browser'未定义。

7 浏览
0 Comments

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日
0
0 Comments

首先,始终尝试避免使用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()

0