使硒测试稳定

问题描述 投票:0回答:3

我对自动化有一个问题。并不是说我不同意这绝对是测试应用程序的最佳方法,但从某种意义上说,实现稳定性是非常困难的。你们如何让测试稳定?当然,我添加了显式等待和偶尔的

thread.sleep()
,但它们从来都不是 100% 稳定的。这个帖子的目的是发布一些你们发现的对自动化测试产生影响的提示和技巧

selenium automation testng
3个回答
5
投票

您应该尽量避免使用 thread.sleep(),原因是当您达到拥有大型测试套件的程度时,您将浪费时间等待。相反,请学习如何使用显式和隐式等待

社区专家建议更频繁地使用显式等待,它可以让你等待特定操作的发生,一旦发生WebDriver将继续工作而不再浪费时间。

尽管 Mark Collin 在 Mastering Selenium WebDriver book

中写了一些更高级的提示和技巧

有时你可以故意让测试失败并捕获异常,然后据此做出决定,学习如何使用“try catch”,我不认为这是一个好的做法,但我见过测试工程师(包括我自己)使用它很多。


0
投票

我建议您查看Selenide,因为如果您不想费力去弄清楚如何使自己的框架稳定,您可以使用Selenide框架来让自己继续前进,然后您就不必担心关于再等一下。

当然,创建自己的框架有一定的价值,特别是如果您进行测试驱动开发并希望对框架进行 Sonar 代码覆盖率的单元测试。 但是,如果您还没有达到那个水平,我建议您使用 Selenide,因为它对您的成功影响最大。


0
投票

以下是使 Selenium 测试稳定的一些最佳实践。

  • 实施适当的等待策略:

    公共类WaitUtils { 私有WebDriver驱动程序; private WebDriver等等;

    公共WaitUtils(WebDriver驱动程序){ this.driver = 驱动程序; this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); }

    public WebElement waitForElementClickable(通过定位器){ 返回 wait.until(ExpectedConditions.elementToBeClickable(locator)); }

    public WebElement waitForElementVisible(通过定位器){ 返回 wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); }

    公共无效waitForPageLoad(){ wait.until(webDriver -> ((JavascriptExecutor) webDriver) .executeScript("返回 document.readyState").equals("完成")); } }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.