この記事は Selenium/Appium Advent Calendar 2018 の3日目の記事です。
こんにちは!
グルグルしてますか!!
人生ですね!!?!?!?!
Selenium IDEでグルグルできるようになりました
新しいSelenium IDEでは、バージョン3.2.0から「Control Flow」と称するフロー制御系のコマンドが実装されました。すなわちグルグルです。
2018年12月3日現在の最新バージョン3.4.5では、次の4種類が利用できます。
- if ... else if ... else ... end
- times ... end
- do ... repeat if
- while ... end
この辺のコマンドを使うために、旧バージョンでは SelBlocks などSelenium IDEのプラグインを併用して実現していましたね。
「新しいSelenium IDEでは標準実装にしない?」という提案のissueが2017年から何件か作成された末、ついに2018年8月に標準実装されたバージョンがリリースされました!
Please support Page Objects, Flow Control, Keywords, Multi Search and Replace, Resouce folders, and a CSS/Xpath creator.
https://github.com/SeleniumHQ/selenium-ide/issues/56
Missing features, Flow Control and Store Variables
https://github.com/SeleniumHQ/selenium-ide/issues/101
使い方
公式のマニュアルで使い方を確認できます。
https://docs.seleniumhq.org/selenium-ide/docs/en/introduction/control-flow/
ここでは、日本語でかんたんな使い方を紹介します。
if ... else if ... else ... end
次のif文のような制御ができるようになります。
if (targetフィールドに記載の条件式) {
... ... ...
} else if (targetフィールドに記載の条件式) {
... ... ...
} else {
... ... ...
}
Selenium IDE上では次のような感じです。条件式には store
系コマンドで定義した変数を ${変数名}
という形で記載できます。
![スクリーンショット 2018-12-03 2.32.00.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F33963%2F95796201-429a-a7da-49de-77c781cd25b1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6387f7ce80dc4e553b59bf8bba14be97)
times ... end
次のfor文のような制御ができるようになります。
const times = targetフィールドに記載の数字;
for (let i = 0; i < times; i++) {
... ... ...
}
Selenium IDE上では次のような感じです。なお、カウンター変数 i
に直接アクセスする手段は今のところ無いようです。
![スクリーンショット 2018-12-03 2.36.32.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F33963%2F29ba9b60-42c5-fc50-b7ec-47350e6f9303.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=eaa4957f0aac2120b95017f481336fdd)
while ... end
次のwhile文のような制御ができるようになります。
while (targetフィールドに記載の条件式) {
... ... ...
}
Selenium IDE上では次のような感じです。条件式には store
系コマンドで定義した変数を ${変数名}
という形で記載できます。
![スクリーンショット 2018-12-03 2.42.33.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F33963%2Fd487d193-303b-5a5e-736e-7ac3af51831c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2053e25ad18cce59c8a257df97c637cc)
do ... repeat if
次のdo ... while文のような制御ができるようになります。
do {
... ... ...
} while (targetフィールドに記載の条件式);
Selenium IDE上では次のような感じです。条件式には store
系コマンドで定義した変数を ${変数名}
という形で記載できます。
![スクリーンショット 2018-12-03 2.44.44.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F33963%2Fdce515fa-2a5f-a68d-2484-c1c5c6e971e3.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3132d6bb4d7254b4e1858e2a727ee231)
デ、データ駆動テストは? foreachは? ハアハア
2018年5月頃から「ExcelなりCSVなり読み込みたいんですよねえ...」というissueは上がっているのですが、現時点でWebExtensionsベースのプラグインに対して有効なファイル操作APIが用意されていないことを理由に実装が進んでいません。
「何言ってんだオメーぜんぜんできるだろ」という不敵なあなたは、ぜひこちらのissueにご意見をどうぞ!!
Feature question - data driven testing
https://github.com/SeleniumHQ/selenium-ide/issues/183
なお、 execute script
でJavaScriptの配列を駆使すればなんとかそれっぽいことができるんじゃないかといろいろ試しましたが、無理でした。
相当トリッキーな書き方をしないとダメみたいですし、それは最早Selenium IDEでやるべきことではないということも言えそうです。
今回はここまで
次回は...誰かー! 誰か来てくれーーー!!!
Selenium/Appium Advent Calendar 2018はまだまだ君の挑戦を待っているぜ!