web-dev-qa-db-ja.com

Seleniumグリッドセッションのタイムアウトを増やす方法は?

テストの実行中は、長い遅延(〜40秒)が必要です。

その間、Seleniumセッションは削除されます。

助けてください:セッションタイムアウトを増やすように設定するにはどうすればよいですか?

ここでは、Seleniumノードログで遅延が開始されてから30秒以内に表示されます。

INFOorg.openqa.Selenium.remote.server.DriverServlet-クライアントのタイムアウトによりセッション7f5fffec-4882-4c4c-b091-c780c66d379dが削除されました

そして、40秒間スリープした後、コードで次の例外が発生します。

org.openqa.Selenium.remote.SessionNotFoundException

考えられるすべてのタイムアウトを増やしようとしました。これが私がハブを始める方法です:

Java -jar Selenium-server-standalone.jar -role hub 
-hubConfig Selenium_hub.json 
-nodeTimeout 61 
-remoteControlPollingIntervalInSeconds 180 
-sessionMaxIdleTimeInSeconds 240 
-newSessionMaxWaitTimeInSeconds 250 
-timeout 59

そしてここにSelenium_hub.jsonがあります:

{
  "Host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets": [],
  "prioritizer":  null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,
  "cleanUpCycle": 5000,
  "timeout": 60000,
  "browserTimeout": 60000,
  "maxSession": 5,
  "jettyMaxThreads": -1
}

ノードにタイムアウトは設定されていません。グリッドコンソールに表示されるものは次のとおりです。

browserTimeout : 60000
capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher
cleanUpCycle : 5000
Host : null
hubConfig : /usr/local/Selenium/config/Selenium_hub.json
jettyMaxThreads : -1
maxSession : 5
newSessionMaxWaitTimeInSeconds : 250
newSessionWaitTimeout : -1
nodePolling : 5000
nodeTimeout : 61
port : 4444
prioritizer : null
remoteControlPollingIntervalInSeconds : 180
role : hub
servlets : []
sessionMaxIdleTimeInSeconds : 240
throwOnCapabilityNotPresent : true
timeout : 59000

Selenium2.45を使用しています

11
Slavik

私はついにそれを理解しました!

解決策は実際には非常に簡単です:ハブで構成を変更した後にノードを再起動する必要があります。

それは本当に明白ではありません:

ハブの構成を変更したら、再起動しました。 Nodeはハブに自動的に再登録されます。次にコンソールを見ると、新しい構成パラメーターが有効になっていることがわかります。さらに、ノード構成を見ると、同じことがわかります。ノードのパラメータが変更されました。誤解を招く恐れがあります。ノードは再登録されましたが、構成は変更されていません。ノードが再起動されたときにのみ変更されます。これはSeleniumのバグだと思います。ノードは再登録。

7
Slavik
C#

driver = new RemoteWebDriver(new Uri("http://Host:4444/wd/hub"), capabilities);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds( desired_time ));

P.S. Seleniumグリッド2.53とFirefox46.0を使用しています

0
user2224571