繁体   English   中英

减慢使用Robot Framework进行测试运行的好方法?

[英]Good ways to slow down a test run using Robot Framework?

因此,我是Robot Framework的新手,并且已经多次遇到该问题的各种形式。 本质上,我创建了一组测试,这些测试最终通过并检查了我期望的内容,然后通过CI / CD管道,在专用的测试运行程序上,我遇到了一些失败。 从本质上讲,这似乎是因为测试运行者的处理速度更快,无论是由于硬件还是硒速度,这都没有关系。

为了避免这些失败,我最终添加了测试以在某些时候“减慢”它们以确保成功,基本上使它们肿或只是更具保护性。 那么对于那些有更多经验的人,您将如何处理这种情况? 我想尽可能地坚持最佳实践,即我不仅在各处使用睡眠,而且在使用隐式等待,但我仍然不知道最佳方法是什么。

这是我最近遇到的一个问题的摘要:

Wait Until Page Contains Element ${STATIC_TABLE_XPATH}/somepath 10
${image_text} = Selenium2Library.Get Element Attribute ${STATIC_TABLE_XPATH}/somepath
${second_paragraph_text} = Selenium2Library.Get Text ${STATIC_TABLE_XPATH}/somepath

因此,基本上,尽管这些功能在功能上是正确的,但有时在测试运行程序上运行时它们什么也不会退缩。 我认为这是因为事情发生得太快了,所以我添加了一个“等待页面包含元素”,不幸的是,这个问题仍然存在。 是否有最好的方法来处理这种情况,使其始终如一地通过?

我以为在期望的变量值上添加关键字直到成功,这会很可怕,但很高兴被证明是错误的!

drkthng的推理是正确的,但是您不需要编写所有代码……它已经存在于ExpectedConditions 一个简单的例子

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(locator));

查看所有可用方法(有很多方法)的文档以及如何使用它们。

即使您觉得这很可怕,我认为减慢Selenium速度的最佳方法是保持轮询元素属性,直到获得适当的变量为止。 尝试成功之前没有任何害处。 如果您有错误,则属性值永远不会正确。 我相信,仅在这种情况下才使用“ 等待关键字成功”关键字。 我用它所有的时间。

尽可能避免睡眠。

隐式等待也不是可扩展的解决方案。 例如,如果您正在检查元素的“不存在”,它们可以使您退缩。

我建议您充分利用WebDriverWaits。

我经常不得不等待某些元素或页面显示,所以我写了一些这样的方法:

public void waitUntilDisplayed(By elementLocator, int timeoutInSeconds) {
    WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver, timeoutInSeconds).ignoring(StaleElementReferenceException.class);
    wait.until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver driver) {

            return elementIsDisplayed(elementLocator);
        }
    });
}

public boolean elementIsDisplayed(By elementLocator) {
    if(elementExists(elementLocator)) {
        WebElement element = driver.findElement(elementLocator);
        return element.isDisplayed();
    }
    return false;
}

public boolean elementExists(By elementLocator) {
    List<WebElement> elements = driver.findElements(elementLocator);
    if (elements.size() < 1) {
        return false;
    }

    return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM