【问题标题】:Assertion fails despite test retrying and returning true尽管测试重试并返回 true,但断言失败
【发布时间】:2016-03-29 15:38:50
【问题描述】:

似乎每当无法找到一个元素并进入重试循环时,即使有一次,断言也会失败,尽管在测试失败 3 次之前没有“return False”。

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

关于什么可能触发失败的断言有什么见解吗?

【问题讨论】:

    标签: python python-2.7 selenium nose


    【解决方案1】:

    你需要return你下一次递归调用的结果:

    # If element is not found, refresh browser loop
    refresh_browser(context)
    return find_element(context, element_id, retry + 1)  # < HERE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多