NameError: глобальное имя 'browser' не определено - PullRequest
0 голосов
/ 07 марта 2019

Я использую 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

Я установил браузер как глобальный, и поэтому я не уверен, почему я получаю эту ошибку

1 Ответ

0 голосов
/ 07 марта 2019

Первым делом: всегда старайтесь избегать использования ключевого слова global. Это вызывает нестабильность кода, поскольку он становится длиннее и сложнее.

В любом случае, ваш код говорит, что глобальный не определен, потому что у вас нет переменной 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()
...