我正在尝试在selenium hub中实现一种默认队列。 有可能指定节点的名称(实际上是它的环境,如“ubuntu上的firefox”或“windows上的chrome”)。 Selenium网格本身有一个默认队列,它按照'先入先出'原则工作。但我想优先考虑一些给予selenium服务器的任务。我没有可能引入自定义队列(似乎没有API),这就是我决定将队列的逻辑与selenium服务器分开的原因。我只会调用一个具有特定名称(环境)的特定节点,例如“firefox important node”或者像这样的smth。
所以,我想知道如何直接告诉selenium将哪个节点用于我的任务? 一般来说,我是否以正确的方式思考?
以下是我的配置: hubConfig.json.erb
{
"host": null,
"port": <%= node[:selenium][:server][:port] %>,
"newSessionWaitTimeout": -1,
"servlets" : [],
"prioritizer": null,
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"nodePolling": <%= node[:selenium][:server][:node_polling] %>,
"cleanUpCycle": <%= node[:selenium][:server][:cleanup_cycle] %>,
"timeout": <%= node[:selenium][:server][:timeout] %>,
"browserTimeout": 0,
"maxSession": <%= node[:selenium][:server][:max_session] %>
}
nodeConfig.json.erb
{
"capabilities": [
{
"browserName": "firefox",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}, {
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}, {
"browserName": "phantomjs",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
],
"configuration": {
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": <%= node[:selenium][:node][:max_session] %>,
"port": <%= node[:selenium][:node][:port] %>,
"host": "<%= node[:fqdn] %>",
"register": true,
"registerCycle": <%= node[:selenium][:node][:register_cycle] %>,
"hubPort": <%= node[:selenium][:server][:port] %>
}
}
我的Driver类:
...
def remote_driver
@browser = Watir::Browser.new(:remote,
:url => "http://myhub.com:4444/wd/hub",
:http_client => client,
:desired_capabilities => capabilities
)
end
def capabilities
Selenium::WebDriver::Remote::Capabilities.send(
"firefox",
:javascript_enabled => true,
:css_selectors_enabled => true,
:takes_screenshot => true
)
end
def client
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 360
client
end
...
我仍然不知道如何将指定节点用于我的任务。
如果我尝试启动驱动程序添加:name => "firefox important node"
并使用
environments:
- name: "firefox important node"
browser: "*firefox"
- name: "Firefox36 on Linux"
browser: "*firefox"
selenium只是在随机节点上启动随机firefox浏览器。我该如何控制它?
答案 0 :(得分:0)
本教程介绍如何为Selenium Grid实现自定义优先级。这允许您定义任何您喜欢的复杂排队逻辑。
http://selenium.polteq.com/en/use-custom-prioritizer-for-selenium-grid-hub/