硒网格监听节点端口而不是集线器端口
selenium grid listening on node port instead of hub port
对于我的测试,我 运行 在不同的端口本地设置网格和节点。
java -jar /usr/bin/selenium-server.jar -port 4444 -role hub
java -jar /usr/bin/selenium-server.jar -role node -hub http://127.0.0.1:4444/grid/register -port 5556
因此,网格 运行ning 在 4444 上,节点 运行ning 在 5556 上。
在我的测试中,如果我将驱动程序启动为
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
然后测试失败并出现异常
response = {'status': 500, 'value': '{"status":13,"value":{"class":"java.lang.NullPointerException","stackTrace":[{"fileName":"Ha...n","lineNumber":590},{"fileName":"Thread.java","className":"java.lang.Thread","methodName":"run","lineNumber":745}]}}'}
测试通过如果我运行节点端口5555测试,而不是集线器端口4444,如下图
driver = webdriver.Remote(command_executor='http://127.0.0.1:5555/wd/hub', desired_capabilities=desired_capabilities)
我认为,我们应该 运行 在集线器端口上进行测试,在本例中是 4444 而不是 5555。
如有错误请指正
您将 desired_capabilities
主要是模块传递给服务器,这是不正确的。
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
应该是
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)
可能是您之前在端口 4444 上的网格配置没有正确关闭。你只是如果任何进程是 运行 端口 4444 并关闭它。您可以使用以下命令了解正在 运行ning 的进程并关闭进程。
C:\Users\username>netstat -o -n -a | findstr 0.0:4444
TCP 0.0.0.0:4444 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
然后重新配置网格,运行它可能与端口 4444 一起工作
--祝一切顺利。
如果您打算通过[=在Grid
配置中使用Selenium
19=]和Node
配置,我建议你使用最新的selenium-server-standalone-3.6.0
jar如下:
启动Selenium Grid Hub
(默认在4444端口):
java -jar selenium-server-standalone-3.6.0.jar -role hub
确认Selenium Grid Hub
已启动:
16:06:29.891 INFO - Nodes should register to http://192.168.1.48:4444/grid/register/
16:06:29.891 INFO - Selenium Grid hub is up and running
访问Selenium Grid Hub Console
并确保Selenium Grid Hub
已启动并且运行:
http://localhost:4444/grid/console
为Mozilla/GeckoDriver启动Selenium Grid Node
(默认在端口5555):
java -Dwebdriver.gecko.driver=geckodriver.exe -jar selenium-server-standalone-3.6.0.jar -role node -hub http://localhost:4444/grid/register
确认Selenium Grid Node
已注册并启动:
16:15:54.696 INFO - Selenium Grid node is up and ready to register to the hub
16:15:54.742 INFO - Starting auto registration thread. Will try to register every 5000 ms.
16:15:54.742 INFO - Registering the node to the hub: http://localhost:4444/grid/register
16:15:54.975 INFO - The node is registered to the hub and ready to use
用Testcase
和DesiredCapabilities
执行如下:
self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=caps)
在成功执行 Testcase
:
时观察以以下内容结尾的控制台日志
16:23:50.590 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@37ff9771
16:23:50.590 INFO - Handler thread for session 31a1dcb0-8bed-40fb-acdb-d5be19f03ba2 (firefox): Executing DELETE on /session/31a1dcb0-8bed-40fb-acdb-d5be19f03ba2
(handler: ServicedSession)
1506941630595 Marionette INFO New connections will no longer be accepted
对于我的测试,我 运行 在不同的端口本地设置网格和节点。
java -jar /usr/bin/selenium-server.jar -port 4444 -role hub
java -jar /usr/bin/selenium-server.jar -role node -hub http://127.0.0.1:4444/grid/register -port 5556
因此,网格 运行ning 在 4444 上,节点 运行ning 在 5556 上。
在我的测试中,如果我将驱动程序启动为
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
然后测试失败并出现异常
response = {'status': 500, 'value': '{"status":13,"value":{"class":"java.lang.NullPointerException","stackTrace":[{"fileName":"Ha...n","lineNumber":590},{"fileName":"Thread.java","className":"java.lang.Thread","methodName":"run","lineNumber":745}]}}'}
测试通过如果我运行节点端口5555测试,而不是集线器端口4444,如下图
driver = webdriver.Remote(command_executor='http://127.0.0.1:5555/wd/hub', desired_capabilities=desired_capabilities)
我认为,我们应该 运行 在集线器端口上进行测试,在本例中是 4444 而不是 5555。
如有错误请指正
您将 desired_capabilities
主要是模块传递给服务器,这是不正确的。
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
应该是
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)
可能是您之前在端口 4444 上的网格配置没有正确关闭。你只是如果任何进程是 运行 端口 4444 并关闭它。您可以使用以下命令了解正在 运行ning 的进程并关闭进程。
C:\Users\username>netstat -o -n -a | findstr 0.0:4444
TCP 0.0.0.0:4444 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
然后重新配置网格,运行它可能与端口 4444 一起工作 --祝一切顺利。
如果您打算通过[=在Grid
配置中使用Selenium
19=]和Node
配置,我建议你使用最新的selenium-server-standalone-3.6.0
jar如下:
启动
Selenium Grid Hub
(默认在4444端口):java -jar selenium-server-standalone-3.6.0.jar -role hub
确认
Selenium Grid Hub
已启动:16:06:29.891 INFO - Nodes should register to http://192.168.1.48:4444/grid/register/ 16:06:29.891 INFO - Selenium Grid hub is up and running
访问
Selenium Grid Hub Console
并确保Selenium Grid Hub
已启动并且运行:http://localhost:4444/grid/console
为Mozilla/GeckoDriver启动
Selenium Grid Node
(默认在端口5555):java -Dwebdriver.gecko.driver=geckodriver.exe -jar selenium-server-standalone-3.6.0.jar -role node -hub http://localhost:4444/grid/register
确认
Selenium Grid Node
已注册并启动:16:15:54.696 INFO - Selenium Grid node is up and ready to register to the hub 16:15:54.742 INFO - Starting auto registration thread. Will try to register every 5000 ms. 16:15:54.742 INFO - Registering the node to the hub: http://localhost:4444/grid/register 16:15:54.975 INFO - The node is registered to the hub and ready to use
用
Testcase
和DesiredCapabilities
执行如下:self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=caps)
在成功执行
时观察以以下内容结尾的控制台日志Testcase
:16:23:50.590 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@37ff9771 16:23:50.590 INFO - Handler thread for session 31a1dcb0-8bed-40fb-acdb-d5be19f03ba2 (firefox): Executing DELETE on /session/31a1dcb0-8bed-40fb-acdb-d5be19f03ba2 (handler: ServicedSession) 1506941630595 Marionette INFO New connections will no longer be accepted