2

我正在尝试将数据发送到登录文本框,但是当我使用“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”。当我运行测试时,我什至可以看到它单击元素!

4

1 回答 1

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()

...意味着该方法在发送变量useridsend_keys()的内容时遇到错误。

尽管您已尝试使用变量userid,但我没有看到在您的代码块中的任何地方声明了变量userid 。因此,您会看到错误:

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


解决方案

将userid变量初始化为:

userid = "Austin"

现在,执行你的测试。

于 2019-12-05T22:32:10.643 回答