尽管测试重试并返回 true,但断言失败
Assertion fails despite test retrying and returning true
似乎每当找不到元素时,它就会进入重试循环,即使有一次,断言也会失败,尽管没有"return False"直到测试失败 3 次。
def find_element(context, element_id, retry=0):
# Generate string list of IDs for printing
if isinstance(element_id, list):
element_name = '#' + ' or #'.join(element_id)
else:
element_name = '#' + element_id
try:
# Print list of IDs with "or" separator, if id is list
info('Locate element: ' + element_name)
# Wait 10 seconds for element to be visible
element = element_visible(context, element_id)
success('Element found: #' + element[0])
success('Location: {}, Size: {}'.format(element[1].location, element[1].size))
return True
except TimeoutException:
warn('Unable to find {}. Retry = {}'.format(element_name, retry))
if retry < 2:
# If element is not found, refresh browser loop
refresh_browser(context)
find_element(context, element_id, retry + 1)
else:
alert('Element "{}" not found'.format(element_name))
return False
except:
alert('Unexpected error: {}'.format(sys.exc_info()[0]))
raise
def assert_element(context, element_id):
result = find_element(context, element_id)
if isinstance(element_id, list):
element_id = ' or '.join(element_id)
assert_true(result, 'Element with id "{}" should appear on page'.format(element_id))
关于什么可能触发失败断言的任何见解?
您需要return
您下一次递归调用的结果:
# If element is not found, refresh browser loop
refresh_browser(context)
return find_element(context, element_id, retry + 1) # < HERE
似乎每当找不到元素时,它就会进入重试循环,即使有一次,断言也会失败,尽管没有"return False"直到测试失败 3 次。
def find_element(context, element_id, retry=0):
# Generate string list of IDs for printing
if isinstance(element_id, list):
element_name = '#' + ' or #'.join(element_id)
else:
element_name = '#' + element_id
try:
# Print list of IDs with "or" separator, if id is list
info('Locate element: ' + element_name)
# Wait 10 seconds for element to be visible
element = element_visible(context, element_id)
success('Element found: #' + element[0])
success('Location: {}, Size: {}'.format(element[1].location, element[1].size))
return True
except TimeoutException:
warn('Unable to find {}. Retry = {}'.format(element_name, retry))
if retry < 2:
# If element is not found, refresh browser loop
refresh_browser(context)
find_element(context, element_id, retry + 1)
else:
alert('Element "{}" not found'.format(element_name))
return False
except:
alert('Unexpected error: {}'.format(sys.exc_info()[0]))
raise
def assert_element(context, element_id):
result = find_element(context, element_id)
if isinstance(element_id, list):
element_id = ' or '.join(element_id)
assert_true(result, 'Element with id "{}" should appear on page'.format(element_id))
关于什么可能触发失败断言的任何见解?
您需要return
您下一次递归调用的结果:
# If element is not found, refresh browser loop
refresh_browser(context)
return find_element(context, element_id, retry + 1) # < HERE