一尘不染

多个浏览器上的Selenium Grid:每个测试用例是否应为每个浏览器具有单独的类?

selenium

我正在尝试整理我的第一个数据驱动测试框架,该框架通过Selenium Grid /
WebDriver在多个浏览器上运行测试。现在,我在自己的类中拥有每个测试用例,并且对浏览器进行了参数设置,因此它在每个浏览器中都运行一次每个测试用例。

在大型测试框架上常见吗?还是应该将每个测试用例复制并微调到其各自类中的每个浏览器?因此,如果我正在测试chrome,firefox和IE,是否应该为每个类提供类,例如:“
TestCase1Chrome”,“ TestCase1FireFox”,“ TestCase1IE”?还是只是“
TestCase1”并配置测试以使其在每个浏览器中运行3次?只是想知道别人是怎么做到的。

将每个测试用例的测试参数化为一个类,可以更轻松地维护非浏览器特定的代码,而针对每个浏览器用例重复一个类,则可以更轻松地维护特定于浏览器的代码。例如,当我说浏览器特定的代码时,单击一个项目。在ChromeDriver上,您不能单击某些元素的中间,而在FirefoxDriver上则可以。因此,您可能仅需要两个不同的代码块来单击一个元素(当它在中间不可单击时)。

对于那些雇用Selenium的QA工程师的人来说,什么是最佳实践?


阅读 292

收藏
2020-06-26

共1个答案

一尘不染

我目前正在从事一个项目,每天要进行大约75,000到90k的测试。我们将浏览器作为参数传递给测试。原因是:

  1. 正如您在问题中提到的那样,这有助于维护。
  2. 我们看不到太多特定于浏览器的代码。如果您有太多特定于浏览器的代码,那么我会说webdriver本身存在问题。因为,selenium / webdriver的优点之一是只编写一次代码,然后在任何受支持的浏览器上运行它。

我看到的代码结构与您提到的代码结构之间的区别是,我没有每个测试用例的测试类。测试根据我测试的功能进行划分,每个功能都有一个类。该类将所有测试作为方法保存。我使用testNG以便可以并行调用这些方法。可能这不适合您的AUT。

2020-06-26