Docker 및 Capybara를 사용하여 호스트에서 셀레늄 실행

Dougui

도커 컨테이너에서 카피 바라를 사용한 테스트가 있습니다. 나는 이것을 사용하여 셀레늄을 설정합니다.

Capybara.register_driver :selenium do |app|
  require 'selenium/webdriver'
  Selenium::WebDriver::Firefox::Binary.path = ENV['FIREFOX_BINARY_PATH'] || Selenium::WebDriver::Firefox::Binary.path
  Capybara::Selenium::Driver.new(app, :browser => :firefox)
end

xvfb로 테스트를 실행할 때 작동하지만 테스트가 실행될 때 실제 브라우저를보고 싶어서 호스트에서 브라우저를 사용하는 방법을 찾고 있습니다.

호스트에서 geckodriver를 시작하고 포트 4444를 공유 할 수 있다고 생각하지만 아직 성공하지 못했습니다. Capybara는 매번 컨테이너에서 geckodriver의 새 인스턴스를 시작합니다.

어떡해?

편집 1 : 정보 추가

나는 카피 바라에 대한 모든 구성을 가지고 있습니다.

#<Capybara::SessionConfig:0x0055ce67731a00
 @always_include_port=false,
 @app_host="http://domain-test.engagement.lvh.me:1300",
 @automatic_label_click=false,
 @automatic_reload=true,
 @default_host="http://www.example.com",
 @default_max_wait_time=5,
 @default_selector=:css,
 @enable_aria_label=false,
 @exact=false,
 @exact_text=false,
 @ignore_hidden_elements=true,
 @match=:smart,
 @raise_server_errors=true,
 @run_server=true,
 @save_path=#<Pathname:/app/tmp/capybara>,
 @server_errors=[StandardError],
 @server_host=nil,
 @server_port=1300,
 @visible_text_only=false,
 @wait_on_first_by_default=false>

다음은 내 도커 작성 파일입니다.

version: '3'
services:
  web:
    build: .
    command: rails s -b 0.0.0.0
    working_dir: /app
    volumes:
      - .:/app
      - ./tmp/bundle:/usr/local/bundle
      - $SSH_AUTH_SOCK:/ssh-agent
    environment:
      - BUNDLE_JOBS=4
      - SSH_AUTH_SOCK=/ssh-agent
      - MONGO_HOST=mongo
      - REDIS_HOST=redis
      - MEMCACHE_HOST=memcache
    ports:
      - "80:3000"
      - "1300:1300"
    links:
      - mongo
      - redis
      - memcache

  mongo:
    image: mongo:3.4.9
    volumes:
      - ~/data/mongo/db:/data/db

  redis:
    image: redis:2.8.17
    volumes:
      - ~/data/redis:/data

  memcache:
    image: memcached:1.5-alpine

그리고 마지막으로 내 Dockerfile :

FROM ruby:2.3.1

RUN apt-get update && apt-get install -y build-essential qt5-default \
  libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x \
  xvfb rsync

ARG GECKODRIVER_VERSION=0.19.0
RUN wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz \
  && rm -rf /opt/geckodriver \
  && tar -C /opt -zxf /tmp/geckodriver.tar.gz \
  && rm /tmp/geckodriver.tar.gz \
  && mv /opt/geckodriver /opt/geckodriver-$GECKODRIVER_VERSION \
  && chmod 755 /opt/geckodriver-$GECKODRIVER_VERSION \
  && ln -fs /opt/geckodriver-$GECKODRIVER_VERSION /usr/bin/geckodriver

RUN apt-get install -y libgtk-3-dev \
  && wget --no-verbose https://ftp.mozilla.org/pub/firefox/releases/56.0/linux-x86_64/en-US/firefox-56.0.tar.bz2 \
  && tar -xjf firefox-56.0.tar.bz2 \
  && mv firefox /opt/firefox56 \
  && ln -s /opt/firefox56/firefox /usr/bin/firefox

ENV TZ Europe/Paris
RUN echo $TZ > /etc/timezone && \
    apt-get update && apt-get install -y tzdata && \
    dpkg-reconfigure -f noninteractive tzdata && \
    apt-get clean

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 && \
    echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | tee /etc/apt/sources.list.d/mongodb-org-3.4.list && \
    apt-get update && \
    apt-get install -y mongodb-org

RUN gem install bundler

RUN mkdir /app
WORKDIR /app
토마스 월폴

Selenium이 원격 geckodriver 인스턴스를 사용하도록하려면 이에 대한 url옵션을 제공해야 합니다.

Capybara.register_driver :selenium do |app|
  require 'selenium/webdriver'
  Capybara::Selenium::Driver.new(app, :browser => :firefox, url: 'http://<your ip as reachable from docker>:<port geckodriver is available on>')
end

그러면 파이어 폭스가 실행될 시스템에서 geckodriver를 실행 --binary해야합니다. 파이어 폭스의 위치를 ​​지정 하는 옵션을 사용할 수 있습니다. 또한 브라우저 요청이 Docker 인스턴스에서 실행중인 테스트중인 앱으로 다시 라우팅되도록 설정 Capybara.app_host(그리고 가능하면 Capybara.always_include_port정확한 구성에 따라 다름)이 필요할 수도 있습니다 .

고려해야 할 또 다른 사항은 AUT가 호스트에서 도달 할 수있는 도커 인스턴스의 인터페이스에 바인딩되어야한다는 것입니다. 기본적으로 Capybara는 연결할 수없는 127.0.0.1 인터페이스 Capybara.server = '0.0.0.0'에 바인딩하므로 사용 가능한 모든 인터페이스에 바인딩하도록 설정 하거나 특정 외부 인터페이스를 지정할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

셀레늄을 사용하여 jupyterlab에서 코드 셀 작성 및 실행

분류에서Dev

LInux에서 firefox를 사용하여 셀레늄 테스트 실행

분류에서Dev

mongodb 및 redis를 사용하여 docker-compose에서 jest 테스트 실행

분류에서Dev

모카에서 셀레늄 테스트를 실행하는 방법?

분류에서Dev

testng를 사용하여 하나의 브라우저에서 여러 클래스에서 Java 셀레늄 웹 드라이버 테스트 실행

분류에서Dev

셀레늄을 사용한 Google 클라우드 실행 및 웹 스크래핑

분류에서Dev

Google Compute Engine을 사용하여 셀레늄 스크립트를 실행할 수 있습니까?

분류에서Dev

Gitlab CI : Docker 및 Shell Runner를 사용하여 파이프 라인에서 테스트를 실행하는 방법

분류에서Dev

MacBookPro 호스트를 사용하여 Docker 컨테이너에서 GUI 앱 실행

분류에서Dev

셀레늄 및 Java를 사용하여 구분 기호 공백으로 웹 페이지에서 얻은 추출 된 텍스트를 인쇄하는 방법

분류에서Dev

셀레늄 웹 드라이버 및 junit5를 사용하여 종단 간 테스트를 수행하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

원격 서버에서 셀레늄을 사용하여 코드 셉션 승인 테스트를 실행하는 방법

분류에서Dev

셀레늄을 사용하여 로그인 양식에서 성공 및 실패 메시지를 확인하는 방법은 무엇입니까?

분류에서Dev

다른 브라우저에서 LiveServerTestCase를 사용하여 셀레늄 테스트를 실행하는 방법은 무엇입니까?

분류에서Dev

Nodejs에서 다른 입력으로 여러 셀레늄 / webdriverjs 테스트를 실행하는 방법

분류에서Dev

셀레늄 및 C #을 사용하여 다른 창에서 여러 링크를 여는 방법

분류에서Dev

Edge Chromium 브라우저에서 카피 바라를 사용하여 셀레늄 웹 드라이버 테스트를 어떻게 실행합니까?

분류에서Dev

gitlab-ci에서 Django 용 셀레늄 테스트 실행

분류에서Dev

셀레늄 Webdriver를 사용하여 keyDown 및 keyUp 이벤트를 사용할 수 없습니다.

분류에서Dev

단일 셀레늄 테스트를 병렬로 여러 번 실행

분류에서Dev

Docker를 사용하여 Redis 마스터 및 센티넬 실행 문제

분류에서Dev

스레드가 Python 셀레늄을 실행하는 동안 Tkinter에서 스레드를 닫는 방법

분류에서Dev

셀레늄, Junit, 오이 및 Maven 프로젝트 실패 후 함수를 호출하는 방법

분류에서Dev

다른 환경에서 셀레늄 테스트를 실행하면 다른 결과가 생성됩니다.

분류에서Dev

Docker에서 셀레늄으로 .py 파일 실행

분류에서Dev

셀레늄 웹 드라이버를 사용하여 exe 파일 실행

분류에서Dev

어떻게 셀레늄 및 Java를 사용하여 전체 웹 페이지의 스크린 샷하세요?

분류에서Dev

진입 점에서 호스트에서 Docker를 실행하는 사용자 GUI 및 UID를 동적으로 선택

분류에서Dev

셀레늄 / 오이 테스트를 병렬로 실행하지만 모든 테스트는 동일한 Chrome 인스턴스에서 실행됩니다.

Related 관련 기사

  1. 1

    셀레늄을 사용하여 jupyterlab에서 코드 셀 작성 및 실행

  2. 2

    LInux에서 firefox를 사용하여 셀레늄 테스트 실행

  3. 3

    mongodb 및 redis를 사용하여 docker-compose에서 jest 테스트 실행

  4. 4

    모카에서 셀레늄 테스트를 실행하는 방법?

  5. 5

    testng를 사용하여 하나의 브라우저에서 여러 클래스에서 Java 셀레늄 웹 드라이버 테스트 실행

  6. 6

    셀레늄을 사용한 Google 클라우드 실행 및 웹 스크래핑

  7. 7

    Google Compute Engine을 사용하여 셀레늄 스크립트를 실행할 수 있습니까?

  8. 8

    Gitlab CI : Docker 및 Shell Runner를 사용하여 파이프 라인에서 테스트를 실행하는 방법

  9. 9

    MacBookPro 호스트를 사용하여 Docker 컨테이너에서 GUI 앱 실행

  10. 10

    셀레늄 및 Java를 사용하여 구분 기호 공백으로 웹 페이지에서 얻은 추출 된 텍스트를 인쇄하는 방법

  11. 11

    셀레늄 웹 드라이버 및 junit5를 사용하여 종단 간 테스트를 수행하는 가장 좋은 방법은 무엇입니까?

  12. 12

    원격 서버에서 셀레늄을 사용하여 코드 셉션 승인 테스트를 실행하는 방법

  13. 13

    셀레늄을 사용하여 로그인 양식에서 성공 및 실패 메시지를 확인하는 방법은 무엇입니까?

  14. 14

    다른 브라우저에서 LiveServerTestCase를 사용하여 셀레늄 테스트를 실행하는 방법은 무엇입니까?

  15. 15

    Nodejs에서 다른 입력으로 여러 셀레늄 / webdriverjs 테스트를 실행하는 방법

  16. 16

    셀레늄 및 C #을 사용하여 다른 창에서 여러 링크를 여는 방법

  17. 17

    Edge Chromium 브라우저에서 카피 바라를 사용하여 셀레늄 웹 드라이버 테스트를 어떻게 실행합니까?

  18. 18

    gitlab-ci에서 Django 용 셀레늄 테스트 실행

  19. 19

    셀레늄 Webdriver를 사용하여 keyDown 및 keyUp 이벤트를 사용할 수 없습니다.

  20. 20

    단일 셀레늄 테스트를 병렬로 여러 번 실행

  21. 21

    Docker를 사용하여 Redis 마스터 및 센티넬 실행 문제

  22. 22

    스레드가 Python 셀레늄을 실행하는 동안 Tkinter에서 스레드를 닫는 방법

  23. 23

    셀레늄, Junit, 오이 및 Maven 프로젝트 실패 후 함수를 호출하는 방법

  24. 24

    다른 환경에서 셀레늄 테스트를 실행하면 다른 결과가 생성됩니다.

  25. 25

    Docker에서 셀레늄으로 .py 파일 실행

  26. 26

    셀레늄 웹 드라이버를 사용하여 exe 파일 실행

  27. 27

    어떻게 셀레늄 및 Java를 사용하여 전체 웹 페이지의 스크린 샷하세요?

  28. 28

    진입 점에서 호스트에서 Docker를 실행하는 사용자 GUI 및 UID를 동적으로 선택

  29. 29

    셀레늄 / 오이 테스트를 병렬로 실행하지만 모든 테스트는 동일한 Chrome 인스턴스에서 실행됩니다.

뜨겁다태그

보관