多个浏览器上的 Selenium Grid : should each test case have separate class for each browser?

标签 selenium webdriver selenium-webdriver selenium-grid

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

这在大型测试框架中很常见吗?或者,是否应该将每个测试用例复制并微调到它自己的类中的每个浏览器?所以,如果我正在测试 chrome、firefox 和 IE,是否应该有每个类,例如:“TestCase1Chrome”、“TestCase1FireFox”、“TestCase1IE”?或者只是“TestCase1”并将测试参数化为每个浏览器运行 3 次?只是想知道别人是怎么做到的。

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

对于那些使用 Selenium 的 QA 工程师,这里的最佳实践是什么?

最佳答案

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

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

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

    关于多个浏览器上的 Selenium Grid : should each test case have separate class for each browser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385052/

    相关文章:

    python - Selenium IEDriver 接受下载

    Java Selenium 通过 li 迭代列表

    java - sendKeys 到 contentEditable div 在 Internet Explorer 中不起作用

    testing - Selenium WebDriver : How to wait for iframes to load completely? 可以点击 iframe 元素文本框 id = “div_4_1_2_1_1-lnk”

    linux - Selenium grid ubuntu主机无法在Windows guest 中创建 Node

    java - WebDriver PhantomJS 无法找到元素,但可以在 Firefox 上正常工作

    java - 获取 <input> 标记之间的文本

    javascript - 如果 "value"属性为 "type",如何设置 "number"属性

    java - Cucumber spring WebDriver 在 @After 方法中退出的设计问题

    c# - 处理多个断言并在未找到时失败测试