如何使用 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 )
如果您将其更改为其他内容,您将得不到想要的结果。
我是硒新手 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 )
如果您将其更改为其他内容,您将得不到想要的结果。