Selenium Automation:在运行测试套件时,除了有效的失败之外,失败测试用例的可接受范围应该是什么



我们公司正在为Web应用程序开发一个包含Selenium、POM、Maven和Java的框架,我们有大约35个测试用例。当我们运行testng.xml时,至少有4到5个测试用例由于过时的元素异常或元素当时不可点击等原因而随机失败。

当我们运行testng.xml时,某些测试用例失败是常见的吗?您的组织中运行了多少测试用例,估计有多少测试用例失败?

您只需要在driver.findElement()之前添加一些等待。Selenium的工作速度非常快,这就是为什么您会得到这个Stale元素或元素不可见的异常。添加等待应该可以解决问题。

测试自动化与测试的可重复性和执行测试的速度有关。有许多商业和开源工具可用于帮助测试自动化的开发,可能是其中使用最广泛的开源解决方案。

失败测试的可接受范围

该矩阵可能因组织而异,或根据特定的客户要求而有所不同。但是,"退出条件"必须持有该限制的密钥。话虽如此,由于测试自动化通过自动化回归测试,因此理想情况下应存在故障。我知道一些组织坚持零缺陷政策。

您面临的错误

  • StaleElementReferenceException:表示对元素的引用现在已"过时"——该元素不再出现在页面的DOM上
  • 您可以在以下位置找到关于StaleElementReferenceException的详细讨论:
    • PageFactory中的StaleElementReference异常
    • Selenium assertFalse失败,出现staleelementreferenceexception
    • Selenium Webdriver-单击多个下拉菜单时出现过时元素异常。DOM力变化
  • ElementClickInterceptedException:表示由于目标元素以某种方式被遮挡,因此无法正确执行单击
  • 您可以在以下位置找到有关ElementClickInterceptedException的详细讨论:
    • Selenium Web驱动程序&Java语言元素在点(x,y)处不可单击。其他元素将收到点击
    • Selenium WebDriver在线程"main"org.openqa.Selenium.ElementNotInteractiableException中引发异常
    • Selenium:如何解决org.openqa.Selenium.InvalidElementStateException:无效元素状态

结论

因此,您提到的错误不是错误,而是在测试执行时可能出现的错误,原因如下:

  • 正在使用的二进制文件版本之间的兼容性不匹配
  • WebDriver实例和Web Browser示例之间的同步不匹配

按照上述最佳实践,可以很容易地解决这些错误。

由于过时的元素、某个点上不可点击的元素、时间问题等原因导致的故障。必须在您的自动化框架中处理和处理-您正在创建和用于构建案例的方法
它们不应该传播并导致案例失败——它们是技术问题,而不是产品问题或测试案例问题。因此,必须立即考虑(例如try/catch块)和处理(重试机制或重新获取web元素)。

本质上,对待这些类型的失败就像对待语法错误一样——不应该有这样的


同时,根据我的经验,处理实时/动态数据的案例有时可能会随机失败。

例如,我正在处理的SUT基于我无法控制的数据和操作(来自上游系统的生活流量)显示一些度量和聚合。有些情况下,检查特定生成的工件是否根据集合推断行为(例如,想象一个月的图,它根本没有多个数据点-那几天没有活动)-它的情况会失败,而不是因为它们构造错误,当然不是因为存在产品错误,而是因为执行时间和数据集的组合。

随着时间的推移,我得出的结论是,拥有这些失败是可以的,让它们"修复"——重新选择数据集,处理这种外部波动等是一项价值递减、投资回报率可疑的活动。在该系统目前约10000个案例中,约1.5%的案例因此而失败(免责声明:SUT仅处理现场/生产数据)
这几乎不是经验法则——这只是一个我认为可以接受的数字。

重要的是,如果我能完全控制这些数据,我就会消除那些"随机"故障。我选择故意使用真实数据,因此我的案例也验证了它的完整性;具有这种负面副作用。

过时元素异常-当元素不再在DOM中时,此异常可能会出现。这个问题的主要原因是在查找元素时加载的页面。处理此问题的最佳方法是捕获异常。正如前面所建议的,它应该被设计为处理这些情况的框架的一部分

元素在点上不可点击-这个问题可能是由于的几个原因造成的

  1. 页面仍在加载
  2. 在我们想要点击的元素顶部有一个覆盖层,从而阻碍了它

最佳方法解决测试中片状问题的最佳方法是捕获故障实例的屏幕截图并进行处理。应设计一个测试框架来处理所有这些边缘情况

谢谢大家,我可以解决问题

遵循的步骤1) 失效元素异常:场景:根据搜索条件,目录将加载编辑和删除按钮。搜索很慢,"要编辑的元素"按钮会过时解决方案:使用了来自早期帖子的自定义等待示例代码,并暂停其工作

public static void customewait(int seconds)
{        Date start = new Date();
Date end = new Date();
while(end.getTime() - start.getTime() < seconds * 1000){
end = new Date();
}
}

早些时候使用了以下代码,但不起作用

public void getVisibilityAllTableAddressBook() 
{
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfAllElements(driver.findElements(By.cssSelector("#data-table-items"))));
}

相关内容

最新更新