python - 尽管测试重试并返回 true,断言仍失败

标签 python python-2.7 selenium nose

似乎每当无法找到某个元素并进入重试循环时,即使只有一次,断言也会失败,尽管在测试失败 3 次之前不会“返回 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))

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

最佳答案

您需要返回下一次递归调用的结果:

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

关于python - 尽管测试重试并返回 true,断言仍失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288869/

相关文章:

python - 相同的正则表达式不适用于我的本地环境

selenium - 页面工厂中ElementLocatorFactory和FieldDecorator的作用是什么?

python - 通过 Post 表单下载文件

python - 分解()时间序列 : ValueError: You must specify a period or x must be a pandas object with a DatetimeIndex with a freq not set to None

python - cv2.resize() 错误 : saves the same picture with different names

python - celery worker 不工作虽然 rabbitmq 有队列建立

python - 填补 Pandas 数据框中的日期空白

python - 带有自定义 id 函数的 pytest 参数化测试

javascript - Selenium 网络驱动程序 : wait until text is present on page

python - 尝试在win7上设置selenium/phantomjs的路径