スポンサーリンク
近年の自動化ブームに乗り、私のチームでもいろいろと自動化の施策を行っています。
そんな中、Webアプリケーションなどブラウザで操作する系のアプリケーションの試験自動化には selenium がよく使われていると思います。
今回は、そんなseleniumの日本語設定についてメモしておきます。
・amazon linux
・Robot Framework 3.0.4 (Python 2.7.14 on linux2)
・ChromeDriver 2.38.552522
自作のWebアプリケーションの私見自動化を行おうと思ったところ、ログインからつまづいてしまいました。
やりたいことは非常にシンプルで「ログイン」と書かれたボタンをクリックするというだけなのですが、なぜかうまくいきません。
確認したところ、原因はブラウザの言語設定でした。
最近?のwebアプリケーションはブラウザの言語設定を見て表示する言語を変えるらしく、会社パソコンから普通にアクセスすると日本語で表示されます。
しかし、デフォルトでは言語が英語になっているため、「Login」というボタンになっており、うまく動かなかったということです。
chromedriverのオプションで言語設定ができました。
robotframeworkで書く場合の一例は以下のようになります。
### オプションの設定
${options} = evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
### 日本語で表示させるオプション
Call Method ${options} add_argument --lang\=ja
### 起動
Create Webdriver Chrome chrome_options=${options}
上記を取り入れて改善したのが以下のソースコードです
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${username} user1
${password} password123
${url} http://localhost:8000/login
*** TestCases ***
My Test Case
start headless chrome
go to myapp
Close Browser
*** Keywords ***
check set_headless method
${version} = evaluate selenium.__version__ selenium
${selenium_version} = evaluate importlib.import_module('distutils.version').LooseVersion($version) importlib
# set_headlessメソッドが実装されたバージョン
か確認
${min_version} = evaluate importlib.import_module('distutils.version').LooseVersion('3.8.0') importlib
Pass Execution If $selenium_version < $min_version seleniumが${min_version}以上でないと動作しません
start headless chrome
check set_headless method
${options} = evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
Call Method ${options} set_headless
### 日本語で表示させるオプション
Call Method ${options} add_argument --lang\=ja
Create Webdriver Chrome chrome_options=${options}
go to myapp
# ブラウザでアクセスする
Go To ${url}
# ログイン
Input Text username ${username}
Input Text password ${password}
Click button ログイン
# 10秒待つ
Sleep 10sec
# スクリーンショットを撮る
Capture Page Screenshot filename=result_login.png
以上です。
スポンサーリンク