NameError:未定义全局名称“browser”

问题描述 投票:-3回答:1

我正在使用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

我将浏览器设置为全局,因此我不确定为什么会收到此错误

python selenium-webdriver pytest acceptance-testing
1个回答
0
投票

第一件事:始终尽量避免使用global关键字。它导致代码不稳定,因为它变得越来越复杂。

无论如何,你的代码说全局没有被定义,因为你没有在函数作用域之外定义的名为globalbrowser变量。

删除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()
© www.soinside.com 2019 - 2024. All rights reserved.