硒测试结构

时间:2016-04-06 12:20:45

标签: selenium selenium-webdriver automated-tests

我已经编写了一个selenium测试,点击了管理面板上的每个选项"页面,然后拍摄每个新页面的屏幕截图。

我现在的任务是对所有语言(目前为11)进行此测试。

我该怎么办? 我是否为每种语言创建了一个新的测试类。 或者我在现有测试中循环遍历每个URL(每种语言的不同URL)。

我测试的代码适用于每种语言。

那么实现这一目标的最佳做法是什么?感谢所有帮助

使用Java,TestNG和POM编辑

4 个答案:

答案 0 :(得分:1)

如果您已在JUnit中编写测试,则可以使用Parameterized运行器来参数化测试。 您可以将语言定义为参数,它会自动运行所有语言的测试。

如果您正在使用TestNG,您也可以参数化测试并使用GetControlValidationValue(); 带注释的方法提供数据,更多详情here

答案 1 :(得分:0)

在我的理解中使用现有的代码所以如果有任何改变,那么你需要更少的可维护性来让脚本再次正确运行它。

在每种语言相应地维护日志和屏幕截图说明之后,您可以正确地跟踪错误。

答案 2 :(得分:0)

我假设您正在使用POM!?如果是这样,那么重新使用页面对象当然是好的,但是你只能通过链接文本找到你的网页元素,这在某些网站上可能会变得很困难。

如果这不是您正在测试的网站上的问题,那么请继续重复使用您的课程。如果 是一个问题,那么你应该考虑为每个网页编写一个基类,并从每个基类中推导出每种语言的特定类,其中所有LinkText和其他语言 - 特定的东西位于。如果每个页面的90%是特定于语言的,那么省略基类并且每页/语言组合只编写一个类当然更为明智。

答案 3 :(得分:0)

@RichardHansson使用像上面提到的Gerald这样的DataProvider。如果您使用循环,那么任何测试上的1个错误都将导致所有其他测试无法运行,并且可能很难确定问题所在。如果使用@DataProvider注释,则

  • 每个场景都将按照自己的测试运行,不依赖于 其他
  • 每个测试都会在testng报告中显示自己的结果
  • 没有重复的代码

http://testng.org/doc/documentation-main.html#parameters-dataproviders