我正在使用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
我将浏览器设置为全局,因此我不确定为什么会收到此错误
第一件事:始终尽量避免使用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()