目前,我在AWS Fargate上运行了一个Selenium Grid,它根据集线器上的所需会话进行自动分类。我有一个运行中心任务的服务和一个节点任务的服务。我目前使用每个节点一个会话的方法,因为需要必要的资源,并且整体执行速度不是此测试套件的主要目标。我也总是至少保持一个节点运行。
实际的自动缩放将起作用;集线器认为它需要更多节点并将节点服务扩展到所需的规模。集线器将保持会话直到节点可用并正确地将其放置在那里。
如果我一次只运行一个测试,那么测试工作正常,但我遇到的问题是,当我尝试并行运行一个组并需要网格扩展时,我得到一个504网关调用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
有没有人知道如何更改超时?
答案 0 :(得分:1)
这与Selenium设置完全无关,所以如果其他人碰巧在使用Fargate或ECS时遇到这种情况,那么你在负载均衡器后面运行Hub ......
如果您碰巧将 CloudFormation 基于他们在Github上的AWS Fargate示例,请务必确保更改Load Balancer设置为idle_timeout.timeout_seconds
的内容。