我试图将数据发送到登录文本框,但是当我使用'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”。我什至可以在运行测试时单击该元素!
答案 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"
现在,执行测试。