java - Selenium Grid Execution 使用我自己的框架

标签 java selenium selenium-webdriver selenium-grid

我用 Java 开发了一个微框架,它具有以下功能:

  1. 所有测试用例列表将与要测试的应用程序的测试数据一起存储在 MS-Access 数据库中
  2. 我创建了多个类,每个类都有多个方法。这些方法中的每一个都代表一个测试用例。
  3. 我的框架将从 Access 中读取标记为执行的测试用例列表,并根据反射动态决定执行哪个类/方法。
  4. 该框架具有用于 sendkeys、click 和所有其他通用方法的方法。它负责在 Excel 中进行报告。

一切正常,没有任何问题。

现在我希望使用 Grid 在多台机器上运行测试用例。我在许多网站上读到,我们需要像 TestNG 这样的框架才能在 Grid 中拥有它。但我希望可以将 Grid 集成到我自己的框架中。我已经阅读了很多文章和电子书,这些文章和电子书都没有解释这方面的编码逻辑。

  • 我将只使用带有 IE 的 Windows 7。我不需要跨浏览器/操作系统测试。
  • 我可以对框架进行任何更改来实现此目的。所以请放心。

在我上面提到的Access DB中,我将详细介绍测试用例和测试用例应该运行的机器。目前用户可以在Access DB中选择自己想要本地运行的测试用例并运行。

我的方法(测试脚本)如何知道它将在哪台机器上执行?除了使用 RemoteWebDriver 和 Capabilities,我还应该更改哪些代码?

如果您需要有关我的代码的更多信息或有任何疑问,请告诉我。如果我对 Grid 的理解有任何错误,请 Aslo 指正。

最佳答案

我的方法如何知道它将在哪台机器上执行? - 您只需要知道一台具有网格设置的机器 - 您的集线器机器的 ip。集线器机器将决定将请求从已注册的节点发送到何处,具体取决于您在实例化驱动程序时指定的功能。初始化 RemoteWebDriver 实例时,需要指定主机(集线器的 ip)。我建议将集线器 IP 保留为可配置属性。

网格的真正用途是并行远程执行。因此,如何让测试并行运行是您需要决定的事情。您可以使用像 Testng 这样的框架,它通过简单的设置提供并行性。您可能需要重组测试以适应 testng。另一种选择是自己实现多线程以并行触发测试。根据我的经验,我会推荐 testng,因为它提供了除并行性之外的更多功能。您需要注意驱动程序的每个实例都是特定于您的线程的,而不是全局变量。

所有测试都可以命中集线器,集线器可以处理其余部分。

关于java - Selenium Grid Execution 使用我自己的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944517/

相关文章:

java - 如何使用 Selenium Java 自动化 map ?或使用页面坐标。请告诉我是否还有其他方法可以自动化 map

java - 如何计算字符串中的括号?

java - SpinLock 可扩展性和限制

python - Selenium "No module named ' selenium'“即使在 pip3 安装之后

ios - 未下载 WebDriverAgent 项目的依赖项

python - Selenium:如何禁用 firefox 和 python 的图像加载?

java - 使用 Selenium 进行加载测试

java - 如何使用 TestNG Framework 和 Selenium WebDriver 在 Excel 文件中写入测试结果(通过/失败)?

java - SMTP 主机配置

java - Spring boot - 如何使用异常处理程序处理页面未找到异常