如何使用 selenium 在节点浏览器上设置功能 Docker

How to Set Capabilities on Node Browser with selenium Docker

我是硒新手 docker。我想创建一个具有功能的 Chrome/Firefox 节点 (Selenium Grid)。添加 Selenium 节点 docker 容器时如何添加功能? 到目前为止我找到了这个命令...

 docker run -d --link selenium-hub:hub selenium/node-firefox:2.53.0

但我不知道如何为其添加功能。已经使用此命令但无法正常工作。

 docker run -d --link selenium-hub:hub selenium/node-firefox:2.53.0 -browser browserName=firefox,version=3.6,maxInstances=5,platform=LINUX

已解决...添加SE_OPTS将帮助您设置功能

docker run -d -e SE_OPTS="-browser browserName=chromeku,version=56.0,maxInstances=3,platform=WINDOWS" --link selenium-hub:hub selenium/node-chrome:2.53.0

有多种方法可以做到这一点,SE_OPTS 就是其中之一,但对我来说,这让我想要完成的事情变得复杂。使用 SE_OPTS 强制我设置我不想更改的功能,否则它们将被重置为 blank/null

我想做的:

SE_OPTS=-browser applicationName=Testing123

但我被迫这样做:

SE_OPTS=-browser applicationName=Testing123,browserName=firefox,maxInstances=1,version=59.0.1

另一种设置能力的方法是提供你自己的能力config.json

-nodeConfig /path/config.json

你可以找到一个default config.json

或者您可以启动节点容器并从中复制当前的容器

docker cp <containerId>:/opt/selenium/config.json /host/path/target

您还可以在 github 或 运行ning 容器上查看 entry_point.sh:

/opt/bin/entry_point.sh   

您可以通过以下方式在节点容器上 运行 bash:

sudo docker exec -i -t <container> bash

这将使您了解如何使用 SE_OPTS 以及如何生成 config.json。注意 config.json 只有在您不提供时才会生成。

/opt/bin/generate_config   

通过检查 generate_config,您可以看到很多 ENV 变量,例如: FIREFOX_VERSION、NODE_MAX_INSTANCES、NODE_APPLICATION_NAME等

这导致了设置功能的第三种方法,即设置 generate_config 使用的环境变量,在我的例子中是 APPLICATION_NODE_NAME

docker run -d -e "NODE_APPLICATION_NAME=Testing123"

最后,使用 SE_OPTS 时要注意不要意外更改值。具体来说,浏览器版本。通过查看entry_point.sh可以看出浏览器版本是计算出来的。

FIREFOX_VERSION=$( firefox -version | cut -d " " -f 3 )

如果您将其更改为其他内容,您将得不到想要的结果。