Pytest Selenium elem.send_keys() вызывает TypeError: объект типа 'NoneType' не имеет len()

Я пытаюсь отправить данные в текстовое поле входа в систему, но когда я использую send_keys, я получаю сообщение об ошибке.

def wait_for_element(selenium, selenium_locator, search_pattern, wait_seconds=10):
    elem = None
    wait = WebDriverWait(selenium, wait_seconds)

    try:
        if (selenium_locator.upper() == 'ID'):
            elem = wait.until(
                EC.visibility_of_element_located((By.ID, search_pattern))
            )
    except TimeoutException:
        pass

    return elem

userid=os.environ.get('userid')
wait_for_element(selenium, "ID", 'username')
assert elem is not None
elem.click()
time.sleep(3)
elem.send_keys(userid)

tests \ util.py: 123: в HTML5_login elem.send_keys(userid) ..\selenium\webdriver\remote\webelement.py:478: в send_keys {'text': "".join(keys_to_typing(value)),


значение = (Нет,)

def keys_to_typing(value):
    """Processes the values that will be typed in the element."""
    typing = []
    for val in value:
        if isinstance(val, Keys):
            typing.append(val)
        elif isinstance(val, int):
            val = str(val)
            for i in range(len(val)):
                typing.append(val[i])
        else:
          for i in range(len(val)):
         for i in range(len(val)):

E TypeError: объект типа 'NoneType' не имеет len()

Я понятия не имею, почему он говорит, что элемент имеет "NoneType", когда я передаю ему утверждение, а также щелкаю элемент. Я даже вижу, как он щелкает по элементу, когда запускаю тест!

1 ответ

Решение

Это сообщение об ошибке...

elem.send_keys(userid) ..\selenium\webdriver\remote\webelement.py:478: in send_keys {'text': "".join(keys_to_typing(value)), value = (None,)
TypeError: object of type 'NoneType' has no len()

... подразумевает, что send_keys()обнаружил ошибку при отправке содержимого переменной ИД пользователя.

Хотя вы пытались использовать переменную userid, я не вижу, чтобы переменная userid объявлялась где-либо в вашем блоке кода. Отсюда вы видите ошибку:

TypeError: объект типа NoneType не имеет len()


Решение

Инициализируйте переменную идентификатора пользователя как:

userid = "Austin"

Теперь выполните свой тест.

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