【问题标题】:NameError: global name 'browser' is not definedNameError:未定义全局名称“浏览器”
【发布时间】:2019-03-07 09:14:28
【问题描述】:

我正在将 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】:

第一件事:始终尽量避免使用global 关键字。当代码变得更长和复杂时,它会导致不稳定。

无论如何,您的代码说 global is not defined 因为您没有在函数范围之外定义名为 browserglobal 变量。

删除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()

【讨论】:

  • 我的测试是:from Base import InitiateDriver def test_new(): browser = InitiateDriver.start_browser() browser.close() 但现在我得到这个错误: Base/InitiateDriver.py:11: UnboundLocalError
猜你喜欢
  • 2011-04-27
  • 1970-01-01
  • 2018-02-13
  • 2014-10-24
  • 2012-05-29
  • 2013-08-23
  • 2014-04-03
  • 2017-05-12
相关资源
最近更新 更多