1

目前,我有一个在 AWS Fargate 上运行的 Selenium Grid,它根据集线器上的所需会话自动扩展。我有一个运行中心任务的服务和一个用于节点任务的服务。我目前使用每个节点一个会话的方法,因为需要必要的资源,而且整体执行速度不是这个测试套件的主要目标。我也总是保持至少一个节点运行。

实际的自动缩放将起作用;集线器认为它需要更多节点并将节点服务扩展到所需的规模。集线器将保持会话直到节点可用,并在节点可用时将其正确放置在那里。

如果我一次只运行一个测试,测试工作完美,但我遇到的问题是,当我尝试并行运行一个组并需要扩大网格时,我得到 504 Gateway Time-out调用 WebDriver 30 秒后。我试图更改所有可能的设置来增加这个超时,但无济于事。

我的集线器配置看起来像

browserTimeout : 0
debug : false
jettyMaxThreads : -1
host : XXXXXXXXX
port : 4444
role : hub
timeout : 180000
cleanUpCycle : 5000
maxSession : 5
hubConfig : /opt/selenium/config.json
capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher
newSessionWaitTimeout : -1
throwOnCapabilityNotPresent : true
registry : org.openqa.grid.internal.DefaultGridRegistry

节点配置看起来像

browserTimeout: 0
debug: false
jettyMaxThreads: -1
host: XXXXXXXXX
port: 5555
role: node
timeout: 1800
cleanUpCycle: 5000
maxSession: 1
capabilities: Capabilities {applicationName: , browserName: chrome, maxInstances: 1, platform: LINUX, platformName: LINUX, seleniumProtocol: WebDriver, server:CONFIG_UUID: ..., version: 66.0.3359.170}
downPollingLimit: 2
hub: http://XXXXXXXXX:4444/grid/register
id: http://XXXXXXXXX:5555
nodePolling: 5000
nodeStatusCheckTimeout: 5000
proxy: org.openqa.grid.selenium.proxy.DefaultRemoteProxy
register: true
registerCycle: 5000
remoteHost: http://XXXXXXXXX:5555
unregisterIfStillDownAfter: 10000

出于某些业务原因,我通过 Jruby 调用我的硒测试,基本配置看起来像

co = Java::OrgOpenqaSeleniumChrome::ChromeOptions.new
co.add_arguments(["--disable-extensions"].to_java(:string))
co.add_arguments(["no-sandbox"].to_java(:string))
co.add_arguments("--headless")
chrome_prefs = {}
chrome_prefs["profile.default_content_settings.popups"] = 0.to_s
chrome_prefs["safebrowsing.enabled"] = "true"
co.set_experimental_option("prefs", chrome_prefs)
cap = Java::OrgOpenqaSeleniumRemote::DesiredCapabilities.chrome
cap.set_capability("Capability", co)

$grid_url = ENV['GRID_URL']
$driver = Java::OrgOpenqaSeleniumRemote::RemoteWebDriver.new(Java::JavaNet::URL.new($grid_url), cap) 
# Get timeout after the RemoteWebDriver.new call

有谁知道如何在这里更改超时?

4

1 回答 1

2

这与 Selenium 设置完全无关,所以如果其他人在使用 Fargate 或 ECS 时碰巧遇到这种情况,并且您在负载均衡器后面运行集线器......

如果您碰巧将CloudFormation建立在他们在 Github 上的 AWS Fargate 示例的基础上,请务必更改他们idle_timeout.timeout_seconds为负载均衡器设置的内容。

于 2018-06-14T16:12:18.013 回答