Selenium Grid 的确切用途是什么?
What is the exact purpose of Selenium Grid?
我是 Selenium、TestNG 和 Selenium Grid 的新手。我对什么时候需要使用 Selenium Grid 感到有点困惑。以下是我对此的理解。如果我是对的,请告诉我:
- Selenium Grid 仅 用于运行在另一台机器上远程测试
- 如果我需要 运行 在本地机器上并行测试,则无需使用 Grid。这可以通过仅使用 TestNG 来实现
- 如果我需要在不同的远程机器上并行执行我的测试,那么我必须将 selenium Grid 与 TestNG 一起使用。
所以我的理解是,Selenium 网格的目的不是并行执行。它用于远程执行。 并行执行是通过TestNG实现的。 仅使用Grid无法并行执行。这是正确的吗?
您的结论非常正确,Selenium Grid 的目的是在远程机器上远程执行测试。分发测试的两个主要原因是:
- 减少测试套件的执行时间。
- 为了避免内存(例如 RAM)c运行ch 在您的本地主机上,您可以在以下位置找到几个相关的讨论:
远程 WebDriver
根据 Remote WebDriver 的官方文档:
You can use WebDriver remotely the same way you would use it locally. The primary difference is that a remote WebDriver needs to be configured so that it can run your tests on a separate machine.
一个远程WebDriver由两部分组成:服务端和客户端。客户端是 WebDriver 测试,服务器只是一个 Java servlet,可以托管在任何现代 JEE 应用程序服务器中。
远程 WebDriver 服务器
Remote WebDriver server 将始终 运行 在装有您要测试的浏览器的机器上。可以从命令行(或通过代码配置)启动服务器。
远程 WebDriver 客户端
要运行一个Remote WebDriver client你必须先连接到RemoteWebDriver。我们通过将 URL 指向我们测试的服务器地址 运行 来做到这一点。
详细步骤
您需要按照以下步骤操作:
启动 Selenium Grid Hub:
java -jar selenium-server-standalone-3.141.59.jar -role hub
生成的日志:
18:10:13.310 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
18:10:13.618 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching Selenium Grid hub on port 4444
2020-01-02 18:10:14.605:INFO::main: Logging initialized @2136ms to org.seleniumhq.jetty9.util.log.StdErrLog
18:10:15.504 INFO [Hub.start] - Selenium Grid hub is up and running
18:10:15.509 INFO [Hub.start] - Nodes should register to http://192.168.1.125:4444/grid/register/
18:10:15.510 INFO [Hub.start] - Clients should connect to http://192.168.1.125:4444/wd/hub
通过urlhttp://localhost:4444/grid/console
:
[=访问Selenium Grid Console v.3.141.59 90=]
启动Selenium 网格节点:
java -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -port 7777 -hub http://192.168.1.125:4444/grid/register
生成的日志:
18:33:55.959 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
18:33:56.112 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching a Selenium Grid node on port 7777
2020-01-02 18:33:56.584:INFO::main: Logging initialized @983ms to org.seleniumhq.jetty9.util.log.StdErrLog
18:33:56.913 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
18:33:57.029 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 7777
18:33:57.029 INFO [GridLauncherV3.lambda$buildLaunchers] - Selenium Grid node is up and ready to register to the hub
18:33:57.195 INFO [SelfRegisteringRemote.run] - Starting auto registration thread. Will try to register every 5000 ms.
18:33:57.734 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://192.168.1.125:4444/grid/register
18:33:57.856 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
再次通过urlhttp://localhost:4444/grid/console
访问Selenium Grid Console v.3.141.59查看注册节点:
我是 Selenium、TestNG 和 Selenium Grid 的新手。我对什么时候需要使用 Selenium Grid 感到有点困惑。以下是我对此的理解。如果我是对的,请告诉我:
- Selenium Grid 仅 用于运行在另一台机器上远程测试
- 如果我需要 运行 在本地机器上并行测试,则无需使用 Grid。这可以通过仅使用 TestNG 来实现
- 如果我需要在不同的远程机器上并行执行我的测试,那么我必须将 selenium Grid 与 TestNG 一起使用。
所以我的理解是,Selenium 网格的目的不是并行执行。它用于远程执行。 并行执行是通过TestNG实现的。 仅使用Grid无法并行执行。这是正确的吗?
您的结论非常正确,Selenium Grid 的目的是在远程机器上远程执行测试。分发测试的两个主要原因是:
- 减少测试套件的执行时间。
- 为了避免内存(例如 RAM)c运行ch 在您的本地主机上,您可以在以下位置找到几个相关的讨论:
远程 WebDriver
根据 Remote WebDriver 的官方文档:
You can use WebDriver remotely the same way you would use it locally. The primary difference is that a remote WebDriver needs to be configured so that it can run your tests on a separate machine.
一个远程WebDriver由两部分组成:服务端和客户端。客户端是 WebDriver 测试,服务器只是一个 Java servlet,可以托管在任何现代 JEE 应用程序服务器中。
远程 WebDriver 服务器
Remote WebDriver server 将始终 运行 在装有您要测试的浏览器的机器上。可以从命令行(或通过代码配置)启动服务器。
远程 WebDriver 客户端
要运行一个Remote WebDriver client你必须先连接到RemoteWebDriver。我们通过将 URL 指向我们测试的服务器地址 运行 来做到这一点。
详细步骤
您需要按照以下步骤操作:
启动 Selenium Grid Hub:
java -jar selenium-server-standalone-3.141.59.jar -role hub
生成的日志:
18:10:13.310 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358 18:10:13.618 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching Selenium Grid hub on port 4444 2020-01-02 18:10:14.605:INFO::main: Logging initialized @2136ms to org.seleniumhq.jetty9.util.log.StdErrLog 18:10:15.504 INFO [Hub.start] - Selenium Grid hub is up and running 18:10:15.509 INFO [Hub.start] - Nodes should register to http://192.168.1.125:4444/grid/register/ 18:10:15.510 INFO [Hub.start] - Clients should connect to http://192.168.1.125:4444/wd/hub
通过url
[=访问Selenium Grid Console v.3.141.59 90=]http://localhost:4444/grid/console
:
启动Selenium 网格节点:
java -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -port 7777 -hub http://192.168.1.125:4444/grid/register
生成的日志:
18:33:55.959 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358 18:33:56.112 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching a Selenium Grid node on port 7777 2020-01-02 18:33:56.584:INFO::main: Logging initialized @983ms to org.seleniumhq.jetty9.util.log.StdErrLog 18:33:56.913 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet 18:33:57.029 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 7777 18:33:57.029 INFO [GridLauncherV3.lambda$buildLaunchers] - Selenium Grid node is up and ready to register to the hub 18:33:57.195 INFO [SelfRegisteringRemote.run] - Starting auto registration thread. Will try to register every 5000 ms. 18:33:57.734 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://192.168.1.125:4444/grid/register 18:33:57.856 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
再次通过url
http://localhost:4444/grid/console
访问Selenium Grid Console v.3.141.59查看注册节点: