-3

I am using Pycharm and Pytest with Selenium Webdriver.

I have set up an Initiate driver.py with the following code:

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

When I run I get the following error:

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

I set the browser as global and so I am unsure why I am getting this error

cdarke
  • 42,728
  • 8
  • 80
  • 84
marklane2001
  • 67
  • 3
  • 14

1 Answers1

0

First thing first: always try to avoid using the global keyword. It causes instability i code as it gets longer and complex.

Anyways, your code says global is not defined because you don't have the global variable named browser defined outside of the function scopes.

Remove the global keyword. You don't need it since you are returning browser to the function itself.

Here how it will look like:

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()
systrigger
  • 398
  • 3
  • 13
  • My test is: from Base import InitiateDriver def test_new(): browser = InitiateDriver.start_browser() browser.close() but now I get this error: Base/InitiateDriver.py:11: UnboundLocalError – marklane2001 Mar 07 '19 at 17:05