2017-09-08 49 views
0

,我试图给变量名赋一个新值,但是我得到下面的错误。UnboundLocalError:在我的条件之前引用的局部变量'name'

运行我的代码后,我越来越UnboundLocalError: local variable 'name' referenced before assignment

你有想法解决它?

我不知道为什么我得到这个如果变量是全球

我的代码

import pytest 
import time 

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
from faker import Faker 

fake = Faker("en_US") 

name = fake.name() 

def create_contributor_minimum_requirements(driver): 

    driver.find_element_by_css_selector(".btn.btn--primary").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.XPATH, ".//*[@id='first-name']/input"))) 
    driver.find_element_by_xpath(".//*[@id='first-name']/input").send_keys(contributor_name) 
    assert driver.find_element_by_css_selector(".actions-bar__nav-link.router-link-active").text == name 
    time.sleep(3) 

    duplicated_contributor_message = driver.find_element_by_css_selector(".field-error-text") 

    if duplicated_contributor_message.is_displayed(): 

     name = fake.name() + fake.name() 

     driver.find_element_by_xpath(".//*[@id='first-name']/input").clear() 
     driver.find_element_by_xpath(".//*[@id='first-name']/input").send_keys(name) 

    driver.find_element_by_css_selector(".btn.save-button.btn--disabled-dark.btn--critical").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".btn.save-button.btn--disabled-dark.btn--disabled"))) 
    assert driver.find_element_by_css_selector(".btn.save-button.btn--disabled-dark.btn--disabled").is_enabled() == False 

def search_created_contributor(driver): 

    driver.find_element_by_css_selector(".navbar__menu__item.navbar__menu__item--search").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".search__input"))) 
    driver.find_element_by_css_selector(".search__input").send_keys(name) 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".search__results__list>li"))) 

def assert_created_contributor_is_found(driver): 

    assert name in driver.find_element_by_css_selector(".search__results__list>li").text 

def test_case_one(driver): 

    login_to_cms(driver) 
    access_contributor_page(driver) 
    create_contributor_minimum_requirements(driver) 
    search_created_contributor(driver) 
    assert_created_contributor_is_found(driver) 

回答

1

功能有自己的范围。为了访问一个全局变量,你需要明确地这样说:

def create_contributor_minimum_requirements(driver): 
    global name 
    ... 

希望它有帮助!

相关问题