Pytest Selenium elem.send_keys() causing TypeError: object of type 'NoneType' has no len()
Pytest Selenium elem.send_keys() causing TypeError: object of type 'NoneType' has no 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: in HTML5_login
elem.send_keys(userid)
..\selenium\webdriver\remote\webelement.py:478: in 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: object of type 'NoneType' has no len()
我不知道为什么当我让它通过断言并单击该元素时它说该元素属于 "NoneType"。当我 运行 测试时,我什至可以看到它点击元素!
这个错误信息...
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: object of type 'NoneType' has no len()
解决方案
初始化 userid 变量为:
userid = "Austin"
现在,执行您的测试。
我正在尝试将数据发送到登录文本框,但是当我使用 '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: in HTML5_login elem.send_keys(userid) ..\selenium\webdriver\remote\webelement.py:478: in 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: object of type 'NoneType' has no len()
我不知道为什么当我让它通过断言并单击该元素时它说该元素属于 "NoneType"。当我 运行 测试时,我什至可以看到它点击元素!
这个错误信息...
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: object of type 'NoneType' has no len()
解决方案
初始化 userid 变量为:
userid = "Austin"
现在,执行您的测试。