現在のプロジェクトの状況のため、セレンテストのために2つのドッカー画像を併用する必要があります。別のドッカーコンテナからのザレニウムコマンドを実行する
1つはザレニウムと呼ばれます。私はそれを持って、ドッカーの作成デモを介して動作します。基本的にセレンドッカーレポのようなものですが、これはビデオを録画してあなたの進捗状況を示すことができます。
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
他の画像は、私は、ブラウザの自動化をトリガーするためのコマンドを実行できるようにモカとセレンwebdriverをのnodejs(NPMパッケージ)をプリインストールNodeJSサーバーです。ここの詳細(https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver)とここに(https://hub.docker.com/r/qmu1/selenium-webdriver-node/)
ドレイパーから走っているザレニアムはちょうどいいところです。毎秒更新される時刻が正しく表示されるため、ライブビューが確実に表示されます。ここで私が使用している他のドッキングウィンドウコンテナ(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();
が、運にこれを変更してみました。私はそれがlocalhostと言うところの偽のアドレスを置くことができ、何かエラーや何か奇妙なことを起こさないようです。
私は最近新しいスクリプトを作成し、自分のマシン上でローカルにzaleniumをテストして正常に動作するように更新したいと考えています。私はちょうどzaleniumにアクセスする他のドッカーのコンテナを取得するように見えることはできません。つまり、zaleniumがローカルマシン上で直接動作していて、他のドッカーコンテナからはアクセスできないことを確認できます。 –
他の誰もこれを正常に実行できましたか? –