由于我当前项目的情况,我需要一起使用 2 个 docker 图像进行硒测试。
一种叫做扎伦铵。我通过 docker-compose 演示完成并工作。它基本上类似于 selenium docker repo,只是它可以录制视频并显示实时进度。
zalenium:
image: "dosel/zalenium"
container_name: zalenium
hostname: zalenium
tty: true
volumes:
- /Users/josephastrahan/seluser/videos:/home/seluser/videos
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
ports:
- 4444:4444
command: >
start --chromeContainers 1
--firefoxContainers 1
--maxDockerSeleniumContainers 8
--screenWidth 800 --screenHeight 600
--timeZone "Europe/Berlin"
--videoRecordingEnabled true
--sauceLabsEnabled false
--browserStackEnabled false
--testingBotEnabled false
--startTunnel false
environment:
- HOST_UID
- HOST_GID
- SAUCE_USERNAME
- SAUCE_ACCESS_KEY
- BROWSER_STACK_USER
- BROWSER_STACK_KEY
- TESTINGBOT_KEY
- TESTINGBOT_SECRET
另一张图片是一个 NodeJS 服务器,预装了 Mocha 和 selenium-webdriver 的 nodejs(npm 包),这样我就可以运行命令来触发浏览器自动化。详细信息在这里(https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver)和这里(https://hub.docker.com/r/qmu1/selenium-webdriver-节点/ )
您可以在这里看到从 docker compose 运行的 Zalenium。我可以正确地看到每秒更新的时间,因此它肯定会显示实时视图。
根据我正在使用的另一个 docker 容器的文档(https://hub.docker.com/r/qmu1/selenium-webdriver-node/),我应该能够简单地使用 docker 运行测试像这样的命令。
HERE=$(pwd)
echo ""
echo "----------------------------"
echo "Running an example"
echo "----------------------------"
echo ""
docker run -it --rm \
-v $HERE:/workspace \
qmu1/selenium-webdriver-node:latest /bin/sh -c "
mocha sample.js --timeout=10000
"
我更改了这个命令以满足我的需要,直到它看起来很有效。
docker run -it --rm --net=distributiontech_default -v $HERE:/workspace qmu1/selenium-webdriver-node:latest /bin/sh -c "mocha tests/seleniumtest.js --timeout=10000"
我得到了回应:
all modules are ready!
0 passing (1ms)
问题是......在 Zalenium 上,我没有看到查看器发生任何事情来验证它是否正常工作?
我的硒脚本如下所示。
//Run using this project (https://github.com/qmu/dockerfiles/blob/master/src/selenium-webdriver-node/example/bin/run)
"use strict";
const webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until,
test = require('selenium-webdriver/testing');
const expect = require('expect.js');
const assert = require('assert');
// var driver = new webdriver.Builder()
// .withCapabilities(webdriver.Capabilities.chrome())
// .usingServer('http://localhost:4444/wd/hub')
// .build();
var driver = new webdriver.Builder()
.forBrowser('firefox')
.usingServer('http://zalenium:4444/wd/hub')
.build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('simple programmer');
driver.findElement(webdriver.By.name('btnG')).click();
//driver.quit();
console.log('all modules are ready!');
我尝试不使用 --net 命令并使用...但没有运气。这样您就可以看到网络详细信息和正在运行的容器。您可以看到 zalenium 已添加到 distributiontech_default 网络。
如何将运行 selenium 代码的 docker 容器连接到运行 Zalenium 的 docker hub?
我尝试将其更改为...
var driver = new webdriver.Builder()
.forBrowser('firefox')
.usingServer('http://localhost:4444/wd/hub')
.build();
但也没有运气。我可以将任何我想要的假地址放在它说 localhost 的地方,而且它似乎没有抛出任何错误或任何奇怪的东西。