由於我對當前項目的情況,我需要將2個碼頭圖像一起用於硒測試。從另一個碼頭集裝箱運行Zalenium的硒命令
一個叫做Zalenium。我已經完成並通過docker-compose演示工作。它基本上像硒碼頭回購,除了這可以記錄視頻,並顯示你現場進展。
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-的webdriver的(NPM封裝)一個服務器的NodeJS預先安裝,這樣我可以運行的命令來觸發瀏覽器的自動化。這裏的詳細信息(https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver)和這裏(https://hub.docker.com/r/qmu1/selenium-webdriver-node/)
您可以看到從docker運行的Zalenium在這裏組成很好。我可以看到時間每秒更新一次,所以它絕對顯示實時視圖。
根據對我使用的其他搬運工容器,是在這裏(https://hub.docker.com/r/qmu1/selenium-webdriver-node/)的文件,我應該能夠與這樣的泊塢窗命令只需運行測試。
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網絡。
如何連接運行的硒代碼運行Zalenium泊塢窗樞紐泊塢窗容器?
我試圖將此更改爲...
var driver = new webdriver.Builder()
.forBrowser('firefox')
.usingServer('http://localhost:4444/wd/hub')
.build();
,但沒有運氣無論是。我可以把任何虛假的地址,我想要的地方它說本地主機,它似乎沒有拋出任何錯誤或任何奇怪的足夠。
只是想更新我最近做了一個新的腳本,並在我自己的機器上本地測試zalenium,它工作正常。我似乎無法讓其他碼頭容器訪問zalenium。換句話說,我可以確認zalenium直接在我的本地機器上工作,但不能從另一個試圖訪問它的Docker容器中運行。 –
有沒有其他人能夠成功地做到這一點? –