1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vagrant環境のseleniumで、chromeブラウザをGUIで動作させる

Posted at

はじめに

CentOSは基本CUIのため、seleniumを実行するときはheadlessモードで動かしていましたが
画面確認の度にスクリーンショットを撮っていて開発効率が落ちていました。
そこで開発時は非headlessモード、運用時はheadlessモードと分けたいと思いました。

以下のような方には当てはまるかと思います。

・ホストOSに開発環境を構築して汚したくない
・開発環境は統一しておきたい
・スクレイピングをする際、スクリーンショットでちまちま画面確認するのが面倒

環境

・macOS Catalina(ホスト)
・vagrant + CentOS7(ゲスト)
・python + selenium(chromedriver)

X11サーバーをインストール

X11サーバーをMacOSにインストールします。
現在は同梱していないそうなのでXQuartzプロジェクトから入手します。

XQuartz
https://www.xquartz.org/

Vagrantfile

以下の1行を追加することで、Linux側のDISPLAY環境変数が設定されます。

Vagrantfile
config.ssh.forward_x11 = true

X11 ForwardingでChrome(Xクライアント)は、DISPLAY環境変数で指示されたXサーバーと通信して画面を出します。
既にvagrant upで起動済みの場合は、vagrant reloadで読み込み直して下さい。

ソースを修正する

headlessモードのオプションをコメントアウトします。

main.py

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep


def main():
    try:
        options = Options()
        # ヘッドレスモード
        #options.add_argument('--headless')
        # ユーザーエージェント
        options.add_argument('--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')
        # 日本語
        options.add_argument('--lang=ja')
        # 起動
        driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', chrome_options=options)
        # 10秒待機
        sleep(10)
    finally:
        # 終了
        driver.quit()


if __name__ == '__main__':
    main()

実行

実行し、mac側にブラウザが表示されれば成功です。

$ python main.py
chrome.png

終わりに

文字化けする場合はフォントのインストール等行なってください。
X11 forwardingするとsend_keysで一部の文字が入力できなくなる現象はなぜだろう?

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?