Pytest Selenium elem.send_keys()导致类型错误:类型为';非类型';没有len()

Pytest Selenium elem.send_keys()导致类型错误:类型为';非类型';没有len(),selenium,webdriver,pytest,sendkeys,pytest-selenium,Selenium,Webdriver,Pytest,Sendkeys,Pytest Selenium,我试图将数据发送到登录文本框,但当我使用“发送密钥”时,我收到一个错误 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'):

我试图将数据发送到登录文本框,但当我使用“发送密钥”时,我收到一个错误

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\u登录中 元素发送密钥(用户ID) ..\selenium\webdriver\remote\webelement.py:478:in send\u键 {'text':“”.join(键到键入(值))


值=(无,)

E TypeError:类型为“NoneType”的对象没有len()

当我让元素通过断言并单击该元素时,我不知道它为什么说该元素为“非类型”。我甚至可以看到它在运行测试时单击该元素!

此错误消息

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,但我没有看到在代码块中的任何地方声明变量userid。因此您看到了错误:

TypeError:类型为“NoneType”的对象没有len()


解决方案 将用户ID变量初始化为:

userid = "Austin"

现在,执行您的测试。

哦,对不起。我忘记在我发布的代码中包含userid。我可以向您保证userid设置了一个字符串。将更新帖子。实际上这就是问题所在。我被分配了userid到
userid=os.environ.get('userid')
这段代码似乎有问题,谢谢您的帮助!
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()
userid = "Austin"