【问题标题】:UnboundLocalError: local variable 'name' referenced before assignmentUnboundLocalError:分配前引用的局部变量“名称”
【发布时间】:2017-09-08 16:10:16
【问题描述】:

在我的情况下,我正在尝试为变量名称分配一个新值,但出现以下错误。

运行我的代码后,我得到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)

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    函数有自己的作用域。为了访问全局变量,您需要明确说明:

     def create_contributor_minimum_requirements(driver):
         global name
         ...
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2020-01-16
      • 2019-12-05
      • 2017-09-19
      • 2020-09-26
      • 2022-01-02
      • 2019-03-22
      相关资源
      最近更新 更多