机器人框架:在机器人框架中设置超时

时间:2017-11-12 05:43:45

标签: python-2.7 selenium selenium-webdriver robotframework

我创建了一个使用Set Browser Implicit Wait 30的框架 我有50个套件,共包含700个测试用例。一些测试用例(200 TC' s)具有查找元素是否存在和元素不存在的步骤。我的目标是我不想等到30秒才能检查Element Present或Element not Present。我尝试使用Wait Until Element Is Visible ${locator} timeout=10,期望元素只等待10秒,但它等待30秒。 问题:在我的框架中,有人可以帮助采用正确的方法来处理这种情况吗?如果我同意等到30秒,那么完成这样的测试用例所需的时间会更多。我正在尝试节省20 * 200秒目前请提示

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是在检查元素不存在之前更改隐式等待权限,然后再将其更改回来。您可以使用关键字set selenium implicit wait执行此操作。

例如,您的关键字可能如下所示:

*** Keywords ***
verify element is not on page
    [Arguments]  ${locator}
    ${old_wait}=  Set selenium implicit wait  10
    run keyword and continue on failure
    ...  page should not contain element  ${locator}
    set selenium implicit wait  ${old_wait}

答案 1 :(得分:-1)

您遇到的问题涉及“隐式等待与明确等待”的问题。搜索互联网将为您提供很多关于为什么不建议混音的好解释,但我认为Jim Evans(IE Webdriver的创建者)在stackoverflow answer中很好地解释了这一点。

通常通过利用其中一个或两个来提高测试运行的性能:

  1. 缩短每项测试的持续时间
  2. 并行运行测试。
  3. 缩短测试持续时间通常意味着完全控制正在测试的应用程序,导致脚本知道,当应用程序成功加载它发生的那一刻。这意味着有一个低或没有隐式等待并专门使用Fluent等待(等待条件发生)。这将导致您的测试以您的应用程序允许的速度运行。

    这可能意味着花时间了解您在技术层面上测试的应用程序。通过使用custom locator,您仍然可以使用所有常规SeleniumLibrary关键字并具有集中等待功能。

    并行运行测试从使测试独立运行并且不依赖于其他测试开始。在Robot Framework中,这意味着让Test Suite文件可以彼此独立运行。我们大多数人使用Pabot并行运行我们的套件,然后合并日志文件。

    并行运行多个浏览器应用程序测试意味着同时运行多个浏览器。如果您在Chrome中进行测试,则可以在单个主机上进行测试 - 但并不总是建议这样做。当您运行IE时,您需要多个框/会话。然后,您开始需要Selenium Grid类型的解决方案来跨多台计算机分配执行负载。