質問編集履歴

1

本文修正

2022/10/07 00:11

投稿

deango
deango

スコア161

test CHANGED
@@ -1 +1 @@
1
- コンテナからseleniumのリモートwebdriverへの接続に失敗する
1
+ seleniumのリモートwebdriverへの接続に失敗する
test CHANGED
@@ -1,7 +1,10 @@
1
1
  ### 前提
2
2
  djangoでWEBアプリを作成しています。
3
- docker-composeを使用して開発環境を構築していますが、
4
3
  UIテストの実行時、seleniumのリモートwebdriverへの接続がうまくいかず困っています。
4
+
5
+ お力添えいただけますと幸いです。
6
+
7
+ 以下のtest_ui.pyが問題のコードです。
5
8
 
6
9
  ### 発生している問題・エラーメッセージ
7
10
 
@@ -104,93 +107,13 @@
104
107
 
105
108
  ~略~
106
109
  ```
107
- ```dockercompose.yml
108
- version: '3.7'
109
-
110
- services:
111
- # サービス名は自由に設定
112
- nyapu:
113
- build: ./app
114
- # サービス起動後に入力されるコマンドを設定
115
- command: python /usr/src/app/nyapu/manage.py runserver 0.0.0.0:8000 --settings nyapu_pj.settings_dev
116
- # データを永続化させる場合の設定。`host:container`でパスを記載
117
- volumes:
118
- - ./app:/usr/src/app
119
- # 指定されたポートは接続されたサービスからアクセス可能
120
- ports:
121
- - 8000:8000
122
- # 環境変数を指定
123
- env_file: .env
124
- # 起動するサービスの依存関係を明記
125
- depends_on:
126
- - postgres
127
- - selenium
128
-
129
-
130
- postgres:
131
- # 公式からイメージをpull
132
- image: postgres:10.17-alpine
133
- # データベースの永続化
134
- volumes:
135
- - postgres_data:/var/lib/postgresql/data
136
- env_file: .env.db
137
110
 
138
111
 
139
- selenium:
112
+ ### 試したこと
113
+ 以前は、ホストOSにchromedriverをインストールして正常にテストできていましたが、
140
- container_name: selenium-chrome
114
+ 今回dockerを使用するため、リモートwebdriverに変更しました。
141
- image: selenium/standalone-chrome-debug:3.141.59-20210929
142
- ports:
143
- - 4444:4444
144
- - 5900:5900
145
- shm_size: "2gb"
146
115
 
147
-
148
- # トップレベルに書く「名前付きvolumes」は複数サービスから参照できる
149
- volumes:
150
- postgres_data:
151
- ```
152
- ```Dockerfile
153
- # 公式からpython3.7 busterイメージをpull
154
- FROM python:3.7-buster
155
-
156
- # 作業ディレクトリを設定
157
- WORKDIR /usr/src/app
158
-
159
- # 環境変数を設定
160
- # Pythonがpyc filesとdiscへ書き込むことを防ぐ
161
- ENV PYTHONDONTWRITEBYTECODE 1
162
- # Pythonが標準入出力をバッファリングすることを防ぐ
163
- ENV PYTHONUNBUFFERED 1
164
-
165
- # aptで依存関係のインストール
166
- RUN apt-get update && apt-get install -y unzip wget vim
167
-
168
- # pipenvをインストール
169
- RUN pip install --upgrade pip \
170
- && pip install pipenv
171
-
172
- # ホストのpipfiletをコンテナの作業ディレクトリにコピー
173
- COPY ./Pipfile /usr/src/app/Pipfile
174
-
175
- # pipfileからパッケージをインストールしてDjango環境を構築
176
- RUN pipenv install --skip-lock --system --dev
177
-
178
- # entrypoint.shをコピー
179
- COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
180
-
181
- # ホストのカレントディレクトリ(現在はappディレクトリ)を作業ディレクトリにコピー
182
- COPY . /usr/src/app
183
-
184
- # entrypoint.shを実行( migrate、collectstaticの処理を記述しています)
185
- ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
116
+ ホストOSで実行した場合もコンテナ上で実行した場合も、どちらも上記の同じエラーで接続失敗したため、test_ui.pyの記述に問題があるようです。
186
- ```
187
-
188
- ### 試したこと
189
- docker-compose psのステータスはUPになっており正常です。
190
- コンテナ間の接続は問題なく、seleniumのコンテナからseleniumのリモートwebdriver(http://chrome:4444/wd/hub)への接続が問題あるようです。
191
-
192
- dockerを使用する前は、ホストOSにchromedriverをインストールして正常にテストできていましたが、
193
- 今回dockerを使用するため、リモートwebdriverの記述に変更しました。
194
117
 
195
118
  ### 補足情報(FW/ツールのバージョンなど)
196
119
  Python 3.7