Pytest Selenium elem.send_keys()导致TypeError:类型为'NoneType'的对象没有len()

时间:2019-12-05 21:34:06

标签: selenium webdriver pytest sendkeys pytest-selenium

我试图将数据发送到登录文本框,但是当我使用'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(用户ID)   .. \ selenium \ webdriver \ remote \ webelement.py:478:在send_keys中       {'text':“” .join(keys_to_typing(value)),

     
     

value =(None,)

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 个答案:

答案 0 :(得分: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()

...表示在发送变量用户ID 的内容时,send_keys()方法遇到错误。

尽管您尝试使用变量 userid ,但在代码块中的任何位置都看不到变量 userid 。因此,您会看到错误:

  

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


解决方案

用户ID 变量初始化为:

userid = "Austin"

现在,执行测试。