AttributeError: у объекта 'str' нет атрибута '__name__' Возвращено

Я хочу просто импортировать список информации через CSV и преобразовать его в простое действие, однако я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sst/cases.py", line 217, in run_test_script
    exec(self.code, self.context)
  File "./randd/exec_tests.py", line 39, in <module>
    use_csv("randd/testcases/login.csv")
  File "./randd/exec_tests.py", line 31, in use_csv
    wait_for(action_input, locator_from_xpath(str(locator_input)))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sst/actions.py", line 146, in inner
    return func(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sst/actions.py", line 926, in wait_for
    return _wait_for(condition, False, _TIMEOUT, _POLL, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sst/actions.py", line 885, in _wait_for
    if config._current_test_assertion_count is not None and 'assert' in condition.__name__:
AttributeError: 'str' object has no attribute '__name__'

Ниже приведен код Python:

# Import Libs
import logging
import csv
import sys
import testdata
from sst.actions import (run_test, go_to, click_element, assert_displayed, wait_for, write_textfield, sleep)
from sst.locators import (find_within, locator_from_css_selector, locator_from_xpath)

logger = logging.getLogger("CSVTests")

def use_csv(csv_file_path):

    #file = open(sys.argv[1], 'rb')
    file = open(csv_file_path, 'rb')
    testcase = csv.reader(file)
    next(testcase)

    for row in testcase:

        testcase_id = row[0]
        action_input = row[1]
        locator_input = row[2]
        detail = row[3]
        description = row[4]

        logger.debug(str(testcase_id))
        print(action_input)
        print(locator_input)

        # print(wait_for(action_input, locator_from_xpath(locator_input)))
        wait_for(action_input, locator_from_xpath(str(locator_input)))

    file.close()

# Goto Build
go_to(testdata.get_base_url())

# Run Tests
use_csv("randd/testcases/login.csv")

Пожалуйста, смотрите ниже фрагмент CSV:

TestCase ID,Action,Element / Locator,Option/Text/Result,Description
1,assert_displayed,"//body//div[@class='container-fluid']//div[contains(@class,'box')]",n/a,Checking that the login box is displayed.
2,assert_displayed,"//body//div[@class='container-fluid']//div[contains(@class,'box')]/div[@class='icon-holder']",n/a,Checking that the Frog icon is displayed.

1 ответ

Ошибка возникает из-за того, что в коде библиотеки sst есть доступ к __name__:

condition.__name__

А также condition не должен быть строковым объектом, но текущее полученное значение на самом деле является строкой.

Я думаю, что в вашем коде, в строке:

wait_for(action_input, locator_from_xpath(str(locator_input)))

Вы не должны оборачивать locator_input в str(), так:

wait_for(action_input, locator_from_xpath(locator_input))

должно сработать

Другие вопросы по тегам