docker로 로컬 네트워크 전용으로 selenium 서버 세워 브라우저에서 동작을 확인할 수 있도록 구축했다

selenium 사용해 여러가지 자동화라든지 테스트라든지 하고 있는 것과 같은 타이밍에 같은 브라우저를 시작하고, 브라우저의 버전 업으로 문제가 나오거나, 로컬의 환경과 분리한 Selenium 환경을 갖고 싶어진다.

딱 좋은 집 고등어(NAS 용도 메인)가 있으므로, 거기에 Selenium 서버를 구축시키고 싶다.
그렇다고 동작을 확인할 수 없다면 그것도 불편하기 때문에 뭔가 방법으로 동작도 보고 싶다.
라고 여기까지 생각했을 때와 있는 곳에서, 브라우저로부터 Selenium의 동작을 볼 수 있는 시스템을 보았다.
여러가지 조사하면 guacamole이라는 오픈 소스가 VNC등의 프로토콜을 HTTP에 포워드 할 수 있는 것 같다.

그래서 다음부터 본제.

사용할 Docker 이미지



selenium



공식적으로 webdriver+browser+vncserver를 번들한 이미지가 몇 가지 제공되고 있다.
htps : // 기주 b. 코 m / 세이 니 mHQ / 도 c 케 루 세 니 mselenium/standalone-chromeselenium/standalone-firefoxselenium이 이번부터
(단독으로 움직여 vnc 클라이언트로부터 확인해도 좋다)

guacamole



이것도 공식에서
ぇtps://구아지도. 아파치. 오 rg/도 c/구 g/구아지도 ぇ도 c케 r. HTMLguacamole/guacdguacamole/guacamole
하고 싶은 곳이지만 최신 이미지라면 클라이언트 인증이 필수이므로 db 이미지도 필요합니다.
어느 정도 공개되는 서비스라면 당연히 필수가 될 것이라고 생각합니다만, 로컬 네트워크 정도라면 인증 따위 따로 필요하지 않다,
라고 생각하면 noauth 라는 확장이 있었던 것 같다. (1.0 이후는 없어졌다)
ぇtps://구아지도. 아파치. rg/c/0.9.9/g/의 th. HTML

이 경우 noauth를 사용할 수있는 그대로의 docker 이미지는 없으므로,
ぇtps://구아지도. 아파치. 오 rg/레아세 s/
noauth 를 사용할 수 있다 0.9.14 를 사용한다.guacamole/guacd:0.9.14guacamole/guacamole:0.9.14(guacd 쪽도 버전 맞춘다.)

guacamole의 Dockerfile



그렇다면 noauth의 확장을 넣은 guacamole 이미지를 만듭니다.

noauth-extension



확장 및 설정 파일을 이미지에 복사하므로 적절한 폴더를 만듭니다. 여기에서는 ./guacamole 라는 이름으로 하자.

ぇtps://구아지도. 아파치. rg/레아세 s/0.9.14/guacamole-auth-noauth-0.9.14.tar.gz 다운로드 및 압축 해제.
내용은 jar 파일이므로 위의 폴더 아래에 extensions라는 폴더를 만들어 거기에 넣는다../guacamole/extensions/guacamole-auth-noauth-0.9.14.jar↑라는 배치로 한다.

guacamole, noauth-config.xml



각 selenium의 vnc와 접속하는 설정 파일도 필요하므로, ./guacamole 에 배치../guacamole/noauth-config.xml↑라는 상태.
내용은

noauth-config.xml
<configs>
    <config name="google chrome" protocol="vnc">
        <param name="hostname" value="chrome" />
        <param name="port" value="5900" />
        <param name="password" value="secret" />
    </config>
    <config name="firefox" protocol="vnc">
        <param name="hostname" value="firefox" />
        <param name="port" value="5900" />
        <param name="password" value="secret" />
    </config>
</configs>

이제 OK

Dockerfile



그런 다음 guacamole 폴더를 기본 이미지에 넣고 GUACAMOLE_HOME를 설정합니다.
FROM guacamole/guacamole:0.9.14

COPY guacamole /etc/guacamole
ENV GUACAMOLE_HOME /etc/guacamole

EXPOSE 8080

이 8080 포트는 웹 액세스용의 포트, 만약 다른 곳에서 사용되고 있는 경우는 변경해 봅시다.

docker-compose



그리고는 docker-compose로 움직일 뿐.

docker-compose.yml
version: '3'
services:
  guacd:
    image: guacamole/guacd:0.9.14
    restart: unless-stopped

  guacamole:
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    ports:
      - "8080:8080"
    links:
      - guacd
    environment:
      GUACD_HOSTNAME: guacd

  chrome:
    image: selenium/standalone-chrome-debug
    restart: unless-stopped
    ports:
      - "4444:4444"

  firefox:
    image: selenium/standalone-firefox-debug
    restart: unless-stopped
    ports:
      - "4445:4444"

포트



8080
 →HTTP용
4444
 →selenium-remote chrome용
4445
 →selenium-remote firefox용
docker-compose up -d 에서 일어나면 같은 네트워크의 브라우저에서http://[ip or host]:8080/guacamole 으로 접속.
(루트는 tomcat 페이지가 나옵니다.)



이런 식으로 나오네요.
그리고는 어느 브라우저인지 선택하고, selenum을 remote로 연결하면 브라우저가 일어난다.

루비에서 selenum-remote (chrome) : 덤


require 'selenium-webdriver'
driver = Selenium::WebDriver.for :remote, url: "http://[host or ip]:4444/wd/hub", desired_capabilities: :chrome
driver.get "https://www.google.com"

참고



참고로 했습니다. 감사합니다.
htps : // m / S_sen Sq / ms / 758 ~ b에서 01 ~ 801 ~ 2d1624

좋은 웹페이지 즐겨찾기