久々の投稿です。なかなか書くネタがなかったのですが、Seleniumの件でまとめておきたい件があったので、備忘録もかねて記します。
以前紹介したSeleniumを、Webアプリケーション自動テスト目的で仕事で利用しています。ここで、ChromeではなくEdgeでアプリを利用するケースが多いため、自動テストもEdgeの方で実行するのが望ましいという事情がありました。
Seleniumの最新版(4.0.0系)ではEdgeの自動操作に対応できるということだったので、実際にやってみたところ上手くできました。この中で、分かった環境構築方法や簡単な自動操作プログラムを紹介したいと思います。
開発環境
■OS、ブラウザ
・Windows10 64bit
・Edge
■プログラミング言語、主なライブラリとバージョン
・Ruby 2.6.6
・selenium-webdriver
4.0.0 rc2
プログラム実行方法
GitHubにサンプルプログラムを公開します。
https://github.com/kotetsu99/selenium_edge
使用するファイルは以下です。
・Gemfile
・edge.rb
(1)Selenium 4.0.0のインストール
GitHubにあるプログラムをダウンロードした後、コマンドプロンプトでダウンローしたディレクトリに移動し、bundler
を利用してGemfileにあるライブラリをインストールします。
bundle install
Seleniumの最新版(4.0.0)は現時点では、正式版はリリースされておらずrc版(リリース候補版: Release Candidateの略?)をGemfileに指定してインストールします。
[補足]
この記事を御覧の方は、Rubyはインストールされているとは思いますが、一応、Windows環境にRubyをインストールする方法について、参考リンクを掲載します。
Windows10にRubyをインストールする手順 - コボルドからドラゴンへ -Kobold to
Dragon-
★Ruby-2.6.6 x64 をインストール。
(2)Edgeドライバーのダウンロード
以下のサイトから、Edgeドライバーをダウンロード・解凍し、先ほどのフォルダの中に「msedgedriver.exe」を置いておきます。
Microsoft Edge ドライバー - Microsoft Edge
※64ビット版である「x64」が対象。
(3)edge.rbの実行
以下のコマンドを実行します。
bundle exec ruby edge.rb
プログラム解説
edge.rb のプログラムソースコードを掲載します。
require 'selenium-webdriver' Selenium::WebDriver::Edge::Service.driver_path = 'msedgedriver.exe' query = "test" options = Selenium::WebDriver::Edge::Options.new #options.add_argument('--headless') options.add_argument('--inprivate') options.add_argument('--lang=ja') options.add_argument('--window-size=1000,1000') driver = Selenium::WebDriver.for :edge, capabilities: options driver.get("https://www.google.com/") driver.find_element(:name, "q").send_keys query driver.find_element(:name, "q").send_keys(:enter) driver.quit
プログラムの動作としては、
・Edgeブラウザを起動
・Googleのページを開く
・「test」というキーワードを検索する
という簡単なものです。
というモジュールにより、ドライバーのパス指定や、Edgeブラウザのオプションの指定などが行えます。
options.add_argument というメソッドで、
・InPrivateモード(シークレットモード)
・言語指定=日本語
・ウィンドウサイズを1000x1000
というブラウザの動作オプションを指定しています。テストを実行するときには、余計な拡張機能を無効にするために、InPrivate指定はよく行います。
また、コメントアウトで無効にしていますが、ブラウザ画面を非表示のままで実行し、テストを高速化するヘッドレスモードの実行オプションも記しています。ヘッドレスモードで実行したいときは、
#options.add_argument('--headless')
のコメントアウト(#)を外せばOKです。
以上が、Ruby、Seleniumによる簡単なEdgeブラウザの操作プログラムの解説でした。Pythonバージョンも作ってみたいと思ってますので、実装したプログラムの完成や整理ができたら公開してみたいと思います。