LoginSignup
2
2

More than 1 year has passed since last update.

Proxy環境下のWSL2上でSeleniumを動かす

Last updated at Posted at 2021-07-09

何か記事を作成してみようと思ったのと、色々つまづいたので備忘録も兼ねて書いておく。

やりたいこと

社内のProxy環境で、Winows10のWSL2を使いUbuntu上でSeleniumを動かす。SeleniumはPythonで動かす想定。

0. 環境

OS: Windows10 Enterprise (Windows機) / Ubuntu-20.04 LTS (WSL)
言語: Python 3.8.10

1. WSL2を使えるようにする

WSLの設定方法は別の記事に: https://qiita.com/tennis_lover/items/66ebdaebee645b6b2c01

Pythonのインストール

WSLのインストールが完了したら、PythonのインストールをUbuntu上で行う。以下の記事にまとめているのでどうぞ。

他にはこの記事が参考になる。

2. Seleniumのインストール

Ubuntu上で行う。
Seleniumはローカルマシン上で動かすか、Docker上で動かすかに大きく分かれるが、
最終的にCIでの自動テストで使いたいので、Docker上で動かす方法をとる。
私が慣れているのがPythonなので、以下はPythonでSeleniumを動作させるための方法。

以下コマンドでSeleniumをインストールする。
pip install selenium
環境設定が完了したら、PythonでSeleniumのコードを書いていくことになる。

Dockerの設定

Windows上で行う(Ubuntu上にDockerを直接インストールしても良いと思うが未確認)。
Docker Desktop for Windowsを使う。Dockerのインストール方法はたくさん出てくるので割愛。
WindowsにDocker Desktopをインストール後したらProxy設定を行う。

3. Proxy設定

以下、Ubuntu上での作業。
コンテナ起動時にオプションで設定しても良いが面倒なので、設定ファイル内に記述する。
/home/{USER}/.docker/config.jsonに以下内容を適当なエディタで追記する。

config.json
"proxies": {
  "default": {
    "httpProxy": "http://{PROXY_HOST}",
    "httpsProxy": "https://{PROXY_HOST}",
    "noProxy": "{HOST_NAME}"
  }
}

4. 動作確認

以下、WSL上での作業。
https://github.com/SeleniumHQ/docker-selenium に書いてある通り以下コマンドでコンテナを起動する(ブラウザはChrome)。

docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-chrome:4.0.0-rc-1-prerelease-20210823

以下は今回作成したサンプルプログラム。Google検索の画面にアクセスして、「Selenium」と検索する。
http://localhost:7900/にアクセスするとDocker上で実行される様子を確認できる。パスワードは上記のGithub内に書いてある。

sample.py
from selenium import webdriver
from selenium.webdriver.common.by import By

# Capability の設定
capabilities = webdriver.DesiredCapabilities.CHROME.copy()

# Options の設定(ブラウザ設定)
options = webdriver.ChromeOptions()

# Selenium Server に接続する
driver = webdriver.Remote(command_executor='http://localhost:4444/wd/hub',
                          desired_capabilities=capabilities,
                          options=options)

# ウィンドウを最大化する
driver.maximize_window()

# Google 検索のページへアクセス
driver.get('https://www.google.co.jp')

# 検索テキストボックスの要素を検索する
element = driver.find_element(By.CLASS_NAME, 'gLFyf.gsfi')

# テキストボックスに「Selenium」と入力する
element.send_keys('Selenium')

# 「Google 検索」ボタンをクリックする
# 直接クリックを実行することもできる
driver.find_element(By.CLASS_NAME, 'gNO89b').click()

# ブラウザを閉じる
driver.close()

テキストボックスなどの要素のClassNameやIDなどはブラウザの開発者ツールで確認できる。

ちなみに

Windows上の、\\wsl$がUbuntuのファイルシステムにマウントされているので、エクスプローラのアドレスバーに入力すればWindowsからでもアクセスできる。

以上です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2