Docker에서 Selenium을 사용하여 원격 조작의 상태를 VNCViewer로 시각적으로 확인
그러나, 그대로라면 브라우저가 움직이는 모습이 보이지 않기 때문에, VNCViewer로 모습을 확인하는 방법을 아래에 나타낸다
전제
절차
Selenium의 Chrome 노드 준비
다음 파일에서 Selenium-Hub 및 Chrome 노드의 컨테이너 정의
Chrome 노드는 Chrome 브라우저 1 프로세스를 지원하며 Selenium-Hub는 여러 노드를 제어합니다.
이번에는 Chrome1 프로세스 만 사용하지만 여러 프로세스로 병렬 실행이 가능합니다.
docker-compose.ymlversion: '3'
services:
hub:
image: selenium/hub
ports:
- 4444:4444
chrome:
image: selenium/node-chrome-debug
environment:
- HUB_PORT_4444_TCP_ADDR=hub
- HUB_PORT_4444_TCP_PORT=4444
ports:
- 5900:5900
depends_on:
- hub
다음 명령으로 컨테이너를 시작하십시오.
docker-compose up -d
VNCViewer를 시작하고 Chrome 노드에 호스트 localhost
, 비밀번호 secret
로 연결
VNCViewer는 여러 가지 존재하지만 여기에서는 RealVNCViewer
Node.js 테스트 코드 작성
다음으로 Node.js를 사용하여 Yahoo의 포털 사이트를 자동으로 조작하는 샘플 작성
먼저 종속성 및 실행 명령을 정의하기 위해 다음 파일을 만듭니다.
package.json{
"main": "index.js",
"scripts": {
"test": "mocha index.js --timeout 10000"
},
"dependencies": {
"mocha": "^6.2.0",
"selenium-webdriver": "^4.0.0-alpha.4"
}
}
실제 테스트 코드를 다음과 같이 작성합니다.
index.jsconst webdriver = require("selenium-webdriver");
const { Builder, By, until } = webdriver;
const TIMEOUT_MILLISEC = 10000;
let driver;
describe("Yahooポータルサイト", () => {
before(() => {
driver = new Builder()
.forBrowser("chrome")
.usingServer("http://localhost:4444/wd/hub")
.build();
});
after(() => {
return driver.quit();
});
it("検索ボックスに入力する", async () => {
await driver.get("https://www.yahoo.co.jp/");
INPUT_XPATH =
'//*[@id="wrapper"]/header/section[1]/div/form/fieldset/span/input';
await driver.wait(
until.elementLocated(By.xpath(INPUT_XPATH)),
TIMEOUT_MILLISEC
);
await driver
.findElement(By.xpath(INPUT_XPATH))
.sendKeys("DockerでSeleniumを使う");
});
});
다음 명령으로 종속성 설치
npm install
테스트 실행
다음 명령으로 테스트 실행
npm run test
아래와 같이 브라우저가 자동으로 조작되는 모습을 볼 수 있다
후처리
종료시에는 컨테이너군을 삭제해 둔다.
docker-compose down
Reference
이 문제에 관하여(Docker에서 Selenium을 사용하여 원격 조작의 상태를 VNCViewer로 시각적으로 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/colomney/items/e03f93046ffe483c4358
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
version: '3'
services:
hub:
image: selenium/hub
ports:
- 4444:4444
chrome:
image: selenium/node-chrome-debug
environment:
- HUB_PORT_4444_TCP_ADDR=hub
- HUB_PORT_4444_TCP_PORT=4444
ports:
- 5900:5900
depends_on:
- hub
docker-compose up -d
{
"main": "index.js",
"scripts": {
"test": "mocha index.js --timeout 10000"
},
"dependencies": {
"mocha": "^6.2.0",
"selenium-webdriver": "^4.0.0-alpha.4"
}
}
const webdriver = require("selenium-webdriver");
const { Builder, By, until } = webdriver;
const TIMEOUT_MILLISEC = 10000;
let driver;
describe("Yahooポータルサイト", () => {
before(() => {
driver = new Builder()
.forBrowser("chrome")
.usingServer("http://localhost:4444/wd/hub")
.build();
});
after(() => {
return driver.quit();
});
it("検索ボックスに入力する", async () => {
await driver.get("https://www.yahoo.co.jp/");
INPUT_XPATH =
'//*[@id="wrapper"]/header/section[1]/div/form/fieldset/span/input';
await driver.wait(
until.elementLocated(By.xpath(INPUT_XPATH)),
TIMEOUT_MILLISEC
);
await driver
.findElement(By.xpath(INPUT_XPATH))
.sendKeys("DockerでSeleniumを使う");
});
});
npm install
npm run test
docker-compose down
Reference
이 문제에 관하여(Docker에서 Selenium을 사용하여 원격 조작의 상태를 VNCViewer로 시각적으로 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/colomney/items/e03f93046ffe483c4358텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)