独立于ui更改的测试用例自动化

时间:2019-07-03 06:53:23

标签: automation

我们正在自动化电视,raspberrypi等硬件设备的测试用例,这些硬件需要执行一定数量的步骤,并在每个步骤结束时检查预期结果。为了使这些测试案例自动化,我们使用dom元素属性(例如id,class,data-component-id等)来获取对象并执行操作。 这种自动化方式的问题是,每次UI更改时,我们都需要更改dom元素的id,class等,因此这是脚本的重做。 我想知道是否有自动化框架或任何其他方法可以独立于ui更改自动执行测试用例。

2 个答案:

答案 0 :(得分:0)

请尝试使用更通用的方式标识元素,而不是使用确切的路径。使用“包含”将帮助您识别具有文本属性的元素,而无需进行定义。因此,即使DOM结构发生变化,但文本相同,您的测试也不会失败。

包含

这是非常方便的XPath Selenium定位器,有时可以节省测试自动化工程师的生命。当元素的属性是动态的时,可以将contains()用作web元素的恒定部分,也可以在需要时在任何情况下使用contains()。

语法:// tag [contains(@attribute,'value')]

示例:// input [包含(@id,'er-messa')]

示例:

Java 1个 2 3 4 5 6 7 8 // * [包含(@ name,'btnClk')] ->在“ btnClk”中搜索DOM中的所有名称属性。

// * [包含(text(),'here')] ->它在DOM中搜索文本“此处”。

// * [包含(@ href,'swtestacademy.com')] ->搜索DOM中的“ swtestacademy.com”链接。

答案 1 :(得分:0)

这就是为什么您应该使用id选择器的原因。它们应该是唯一的,因此不受UI更改的影响。 name选择器应该以相同的方式工作。

如果您正在使用Selenium,请按照以下优先顺序(宽松地)使用以下对象定位符列表:

  • id
  • 名称
  • 标签名称
  • 课程
  • CSS或Xpath
  • 链接文本或部分链接文本

如果您确实希望这些元素能够被一致地标识,则可以与开发人员联系,并很好地要求他们添加ID。