Selenium GRID——会话在调用 WebDriver.getCurrentUrl() 后不到 100 毫秒后因超时而终止
Selenium GRID -- Session terminated due to TIMEOUT after less then 100 milliseconds when invoking WebDriver.getCurrentUrl()
我有一组并行测试,当我在本地 运行 时从来没有遇到过这个问题。这只发生在我小小的两节点网格上。当我尝试调用 WebDriver.getCurrentUrl()
时,我的测试一直很糟糕。错误信息是这样的:
org.openqa.selenium.WebDriverException: Session [035e8f79-fdd7-4492-a565-f803df792d3c] was terminated due to TIMEOUT
Command duration or timeout: 90 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'bos-mpky6', ip: '172.30.31.59', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_102'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=46.0.1, platform=LINUX, nativeEvents=false, acceptSslCerts=true, webdriver.remote.sessionid=035e8f79-fdd7-4492-a565-f803df792d3c, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 035e8f79-fdd7-4492-a565-f803df792d3c
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:701)
at org.openqa.selenium.remote.RemoteWebDriver.getCurrentUrl(RemoteWebDriver.java:326)
起初,我以为这是配置问题,但我已将我的设置配置为超时时间长于几毫秒。这是我用于集线器的配置:
{
"host": null,
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"prioritizer": null,
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"nodePolling": 5000,
"cleanUpCycle": 5000,
"timeout": 300000,
"browserTimeout": 0,
"jettyMaxThreads":-1
}
这是我为我的两个节点使用的配置:
{
"capabilities":
[
{
"browserName": "firefox",
"version": "46.0.1",
"platform": "LINUX",
"maxInstances": 5
}
],
"configuration":
{
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"nodeTimeout":500000,
"port":5555,
"nodePolling":2000,
"registerCycle":10000,
"register":true,
"cleanUpCycle":2000,
"timeout":500000
}
}
我没有使用 Docker 或类似的东西。我已经尝试了网格服务器的 2.53.1、2.53.0、2.52.0 和 2.51.0 版本,但问题仍然困扰着我的测试。有什么办法可以解决这个问题吗?我找不到与超时相关的配置设置似乎可以解决这个问题。
我在调整 timeout 和 browserTimeout 属性时遇到了同样的错误。我的解决方案是将集线器配置设置回默认值。但是你已经和我一样了
但是我发现您的节点配置略有不同。
我正在使用 Windows 7 作为节点,这是我的配置:
{
"capabilities": [
{
"browserName": "firefox",
"maxInstances": 2,
"takesScreenshot": true,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "internet explorer",
"maxInstances": 1,
"version": "11",
"webdriver.ie.driver": "<MOUNT>\Selenium\IEDriverServer_2.53.1_32bit",
"takesScreenshot": true,
"platform": "WINDOWS",
"seleniumProtocol": "WebDriver"
}
],
"configuration": {
"_comment" : "Configuration for Node",
"cleanUpCycle":5000,
"timeout": 500,
"port": 8088,
"hubHost": V0001172,
"register": true,
"hubPort": 8089,
"maxSession": 1
}
}
我将 seleniumProtocol 添加到我的节点配置中。我不记得我在哪里找到它,但在我的设置中它有效。
我有一组并行测试,当我在本地 运行 时从来没有遇到过这个问题。这只发生在我小小的两节点网格上。当我尝试调用 WebDriver.getCurrentUrl()
时,我的测试一直很糟糕。错误信息是这样的:
org.openqa.selenium.WebDriverException: Session [035e8f79-fdd7-4492-a565-f803df792d3c] was terminated due to TIMEOUT
Command duration or timeout: 90 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'bos-mpky6', ip: '172.30.31.59', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_102'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=46.0.1, platform=LINUX, nativeEvents=false, acceptSslCerts=true, webdriver.remote.sessionid=035e8f79-fdd7-4492-a565-f803df792d3c, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 035e8f79-fdd7-4492-a565-f803df792d3c
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:701)
at org.openqa.selenium.remote.RemoteWebDriver.getCurrentUrl(RemoteWebDriver.java:326)
起初,我以为这是配置问题,但我已将我的设置配置为超时时间长于几毫秒。这是我用于集线器的配置:
{
"host": null,
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"prioritizer": null,
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"nodePolling": 5000,
"cleanUpCycle": 5000,
"timeout": 300000,
"browserTimeout": 0,
"jettyMaxThreads":-1
}
这是我为我的两个节点使用的配置:
{
"capabilities":
[
{
"browserName": "firefox",
"version": "46.0.1",
"platform": "LINUX",
"maxInstances": 5
}
],
"configuration":
{
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"nodeTimeout":500000,
"port":5555,
"nodePolling":2000,
"registerCycle":10000,
"register":true,
"cleanUpCycle":2000,
"timeout":500000
}
}
我没有使用 Docker 或类似的东西。我已经尝试了网格服务器的 2.53.1、2.53.0、2.52.0 和 2.51.0 版本,但问题仍然困扰着我的测试。有什么办法可以解决这个问题吗?我找不到与超时相关的配置设置似乎可以解决这个问题。
我在调整 timeout 和 browserTimeout 属性时遇到了同样的错误。我的解决方案是将集线器配置设置回默认值。但是你已经和我一样了
但是我发现您的节点配置略有不同。 我正在使用 Windows 7 作为节点,这是我的配置:
{
"capabilities": [
{
"browserName": "firefox",
"maxInstances": 2,
"takesScreenshot": true,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "internet explorer",
"maxInstances": 1,
"version": "11",
"webdriver.ie.driver": "<MOUNT>\Selenium\IEDriverServer_2.53.1_32bit",
"takesScreenshot": true,
"platform": "WINDOWS",
"seleniumProtocol": "WebDriver"
}
],
"configuration": {
"_comment" : "Configuration for Node",
"cleanUpCycle":5000,
"timeout": 500,
"port": 8088,
"hubHost": V0001172,
"register": true,
"hubPort": 8089,
"maxSession": 1
}
}
我将 seleniumProtocol 添加到我的节点配置中。我不记得我在哪里找到它,但在我的设置中它有效。