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"
Теперь выполните свой тест.