我创建了一个使用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秒目前请提示
答案 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中很好地解释了这一点。
通常通过利用其中一个或两个来提高测试运行的性能:
缩短测试持续时间通常意味着完全控制正在测试的应用程序,导致脚本知道,当应用程序成功加载它发生的那一刻。这意味着有一个低或没有隐式等待并专门使用Fluent等待(等待条件发生)。这将导致您的测试以您的应用程序允许的速度运行。
这可能意味着花时间了解您在技术层面上测试的应用程序。通过使用custom locator,您仍然可以使用所有常规SeleniumLibrary关键字并具有集中等待功能。
并行运行测试从使测试独立运行并且不依赖于其他测试开始。在Robot Framework中,这意味着让Test Suite文件可以彼此独立运行。我们大多数人使用Pabot并行运行我们的套件,然后合并日志文件。
并行运行多个浏览器应用程序测试意味着同时运行多个浏览器。如果您在Chrome中进行测试,则可以在单个主机上进行测试 - 但并不总是建议这样做。当您运行IE时,您需要多个框/会话。然后,您开始需要Selenium Grid类型的解决方案来跨多台计算机分配执行负载。