Selenium IDE コマンドリファレンス  (2019/09版 : Selenium IDE v3.12.0 [全96コマンドを徹底解説])

# はじめに
[10分でわかるブラウザ処理自動化！初心者向けSelenium IDE入門ガイド](https://qiita.com/oh_rusty_nail/items/5b584c95e01759c00869)でSelenium IDEを使い始めるためのガイドを書きました。
そこでは、条件分岐やループ処理など一部のコマンドについての解説を書きました。
本記事では **v3.12.0(2019/09時点での最新)のコマンド全部をサンプルコード** を書きながら解説しています。
今回作成したサンプルコードはGithubに置いています。
https://github.com/RustyNail/SeleniumIDEDemo の [SeleniumIDEcommand.side](https://github.com/RustyNail/SeleniumIDEDemo/blob/master/SeleniumIDEcommand.side)をインポートすれば実行できます。

# Selenium IDEのコマンド一覧
新しいSelenium IDEがでた当初はコマンドが少なくて「今までやっていたことができなくなってる？使えないのでは？」とちょっと不安でしたが、今では随分コマンドが増え充実してきているようです。
[公式のドキュメント](https://docs.seleniumhq.org/selenium-ide/docs/en/api/commands/)もありますが、この記事にはサンプル
Selenium IDEのコマンドリストを見るとこれだけあります。(アルファベット順)

```
 1. add selection
 2. answer on next prompt
 3. assert
 4. assert alert
 5. assert checked
 6. assert confirmation
 7. assert editable
 8. assert element present
 9. assert element not present
10. assert not checked
11. assert not editable
12. assert not selected value
13. assert not text
14. assert prompt
15. assert selected value
16. assert selected label
17. assert text
18. assert title
19. assert value
20. check
21. choose cancel on next confirmation
22. choose cancel on next prompt
23. choose ok on next confirmation
24. click
25. click at
26. close
27. debugger
28. do
29. double click
30. double click at
31. drag and drop to object
32. echo
33. edit content
34. else
35. else if
36. end
37. execute script
38. execute async script
39. for each
40. if
41. mouse down
42. mouse down at
43. mouse move at
44. mouse out
45. mouse over
46. mouse up
47. mouse up at
48. open
49. pause
50. remove selection
51. repeat if
52. run
53. run script
54. select
55. select frame
56. select window
57. send keys
58. set speed
59. set window size
60. store
61. store attribute
62. store json
63. store text
64. store title
65. store value
66. store window handle
67. store xpath count
68. submit
69. times
70. type
71. uncheck
72. verify
73. verify checked
74. verify editable
75. verify element present
76. verify element not present
77. verify not checked
78. verify not editable
79. verify not selected value
80. verify not text
81. verify selected label
82. verify selected value
83. verify text
84. verify title
85. verify value
86. wait for element editable
87. wait for element not editable
88. wait for element not present
89. wait for element not visible
90. wait for element present
91. wait for element visible
92. webdriver answer on visible prompt
93. webdriver choose cancel on visible confirmation
94. webdriver choose cancel on visible prompt
95. webdriver choose ok on visible confirmation
96. while
```

**全部で 96 個** のコマンドがありますが、通常はif..else..endやwhile..endのように複数のコマンドを組み合わせて使います。

いくつかのコマンドを組み合わせた形でサンプルコードを作成して解説していきます。
サンプルを実行する環境として、日本Seleniumユーザーコミュニティのテスト用のサイト( http://example.selenium.jp/reserveApp_Renewal/ )を使用しています。
そのため、Base URLは http://example.selenium.jp を設定しています。

## 入力操作

### type
入力欄に任意のテキストを入力することができます。

【コード】
![スクリーンショット 2019-08-22 22.21.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/47c8ebf4-f22a-463f-bc96-a11b9ebeb2a5.png)
【実行結果】
![スクリーンショット 2019-08-22 22.22.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/236f3f94-7301-1f53-1d41-8719d9618b1e.png)

### edit content
コンテンツ編集可能な要素に値を入力します。

【コード】
以下の例では、コンテンツが編集可能なサイト https://quilljs.com/ を利用しています。
![スクリーンショット 2019-09-05 23.01.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/192fab2f-d5b0-5ba6-4bb7-6a5fb384021e.png)

【実行結果】
![スクリーンショット 2019-09-05 23.05.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/85b128d5-dbf6-7221-c653-293f5594e462.png)

### send keys
指定した要素の対して、キー入力操作を行います。
`type` コマンドとは異なり、既存のコンテンツを書き換えることは出来ません。

【コード】
(Enterキーを押した場合)
![スクリーンショット 2019-08-28 23.28.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e0e985c7-5e9b-55db-8a8c-555481b3b864.png)
フォームが送信されます。

(文字列を入力した場合)
![スクリーンショット 2019-08-28 23.34.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/94032954-b2a9-714b-04a4-f60fb6727c41.png)
![スクリーンショット 2019-08-28 23.34.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/3ece1c09-c176-de43-5c54-03f9c10a2e00.png)
既存のコンテンツ(入力済みの"山田花子")は書き換えないため追記するような形になります。

### select
選択肢(select要素)の内、指定したものを選択します。

【コード】
以下の例では、宿泊人数を1人(デフォルト)から2人に変更しています。
![スクリーンショット 2019-08-23 16.49.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/6b457780-b5aa-b198-cb6d-d98952a844c8.png)

【実行結果】
実行前：![スクリーンショット 2019-08-23 16.54.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/dec6d391-c1fa-6b2e-6b1b-fb0e4c818c10.png)   実行後：![スクリーンショット 2019-08-23 16.54.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e91ca991-17c9-15ce-9421-7c1aeb273804.png)

### add selection
対象とする選択肢を複数選択することができます。
よくあるCtrlキー(OSXの場合はcommandキー)を押しながら選択するアレです。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2013/09/testing.html というデモサイトを使用しています。
![スクリーンショット 2019-09-01 23.18.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/85275792-6ae7-6413-d11c-73e43773d6cc.png)

【実行結果】
![スクリーンショット 2019-09-01 23.05.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e82746b2-b95d-5388-1f62-11bc8a220a20.png)

### remove selection
対象とする選択肢を複数選択したものを除外することができます。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2013/09/testing.html というデモサイトを使用しています。
![スクリーンショット 2019-09-01 23.16.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/442cb12a-8a9d-adc2-5d89-518f2ef438e0.png)

【実行結果】
![スクリーンショット 2019-09-01 23.15.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0c20d0e8-70d1-2c8c-07be-9659d261a34c.png)

### check
チェックボックスにチェックを入れます。

【コード】
以下の例では、「昼からチェックインプラン」にチェックを入れます。
![スクリーンショット 2019-08-23 17.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/73367dca-68ee-7286-aa89-dbcd3601ce29.png)

![スクリーンショット 2019-08-23 17.02.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/fc723995-98ba-ac61-1162-69d4d0773015.png)

【実行結果】
　(実行前は「昼からチェックインプラン」にチェックが入っていません)
![スクリーンショット 2019-08-23 17.01.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c8fe45f6-ed41-9a7d-0091-656127bd5e01.png)

### unckeck
チェックボックスにチェックを外します。

【コード】
![スクリーンショット 2019-08-23 17.02.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4854aac5-28a5-716a-d757-9a3cbfacc07a.png)

【実行結果】
　(実行前に「昼からチェックインプラン」にチェックを入れています)
![スクリーンショット 2019-08-23 17.01.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/6eb9a15c-d7e5-a4f7-e5b9-7566175d7654.png)

### choose ok on next confirmation / webdriver choose ok on visible confirmation
表示されたダイアログでOKを選択します。
![スクリーンショット 2019-09-05 23.31.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/977874c4-0089-51cd-1d03-a8525ddf3d5f.png)

ダイアログがまだ表示されていない場合は、 `choose ok on next confirmation` を使用します。
ダイアログが既に存在する場合は、 `webdriver choose ok on visible confirmation` を使用します。

【コード】
以下の例では、確認ダイアログが表示されるデモサイト http://only-testing-blog.blogspot.com/2013/09/test.html を使用しています。
![スクリーンショット 2019-09-05 22.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e75d30bb-0ab8-b826-8358-86e4a0e4e790.png)
![スクリーンショット 2019-09-05 22.28.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/aa764b50-5614-6f7f-e120-2e7014d04f91.png)
ダイアログ表示からOKを選択するまでのコード：
![スクリーンショット 2019-09-05 22.46.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/179b2955-d9d7-71d4-ebc5-c6b67f902912.png)

### choose cancel on next confirmation / webdriver choose cancel on visible confirmation
表示されたダイアログでキャンセルを選択します。
![スクリーンショット 2019-09-05 23.31.37のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c03576ad-7385-99e9-d54e-ac484d928305.png)

ダイアログがまだ表示されていない場合は、 `choose cancel on next confirmation` を使用します。
ダイアログが既に存在する場合は、 `webdriver choose cancel on visible confirmation` を使用します。

【コード】
以下の例では、確認ダイアログが表示されるデモサイト http://only-testing-blog.blogspot.com/2013/11/new-test.html を使用しています。
![スクリーンショット 2019-09-05 22.49.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/b7d9332b-fabc-0aad-a3a0-4ce56d004691.png)
![スクリーンショット 2019-09-05 22.49.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/53ad52d4-7bee-b13b-9af6-6dddcb15384f.png)

ダイアログ表示からキャンセルを選択するまでのコード：
![スクリーンショット 2019-09-05 22.46.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/12cacd8f-ab51-ed34-7c2e-c91eb956f73a.png)

### answer on next prompt / webdriver answer on visible prompt
表示されたアラートプロンプトで回答を入力(してOKを選択)します。

![スクリーンショット 2019-09-05 23.44.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/efccfbca-6eb7-e32d-4441-d74f7f4a8ccf.png)

アラートプロンプトがまだ表示されていない場合は、 `answer on next prompt` を使用します。
アラートプロンプトが既に存在する場合は、 `webdriver answer on visible prompt` を使用します。

【コード】
以下の例では、アラートプロンプトが表示されるデモサイト http://only-testing-blog.blogspot.com/2013/11/new-test.html を使用しています。
![スクリーンショット 2019-09-05 23.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0c3fd7e1-9f53-2602-bf99-61cb6461ef58.png)
![スクリーンショット 2019-09-05 23.46.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/18b810e3-0f1f-7118-b363-d2bd0e035a52.png)

アラートプロンプト表示から回答を入力(してOKを選択)するまでのコード：
![スクリーンショット 2019-09-05 23.48.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/2319439c-ead9-7aa7-fb02-7f2dc2531a84.png)

### choose cancel on next prompt / webdriver choose cancel on visible prompt
表示されたアラートプロンプトでキャンセルを選択します。

![スクリーンショット 2019-09-05 23.23.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/815fc386-81d2-8348-df79-6dd225d803d5.png)

アラートプロンプトがまだ表示されていない場合は、 `choose cancel on next prompt` を使用します。
アラートプロンプトが既に存在する場合は、 `webdriver choose cancel on visible prompt` を使用します。

【コード】
以下の例では、アラートプロンプトが表示されるデモサイト http://only-testing-blog.blogspot.com/2013/11/new-test.html を使用しています。
![スクリーンショット 2019-09-05 23.21.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/00d01d34-cef9-b51b-b606-ee0f1f0d21fc.png)
![スクリーンショット 2019-09-05 23.21.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c5649ede-dd85-8a5b-ab72-f875699cc3a5.png)

アラートプロンプト表示からキャンセルを選択するまでのコード：
![スクリーンショット 2019-09-05 23.31.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/125ae1d4-9f6d-fb15-6f8b-dc59878e5975.png)

## マウス操作

### click
対象の要素（リンク、ボタン、チェックボックス、ラジオボタンなど）をクリックします。 

【コード】
以下の例では、「利用規約に同意して次へ」をクリックしています。
![スクリーンショット 2019-08-23 23.20.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c3acbf39-53c6-8b5d-edd6-66d46f3088b4.png)

![スクリーンショット 2019-08-23 23.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/dada7083-3ca4-d27a-5a3d-cada7efffe66.png)

### click at
対象の要素（リンク、ボタン、チェックボックス、ラジオボタンなど）をクリックします。 
クリックするポイント(座標)を指定できます。対象要素に対して相対的で、例えば左上隅は 0,0になります。

【コード】
![スクリーンショット 2019-09-05 21.51.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/54131f67-53bf-8e8a-c60a-8a23d53650c8.png)

### double click
対象の要素（リンク、ボタン、チェックボックス、ラジオボタンなど）をダブルクリックします。

【コード】
![スクリーンショット 2019-09-08 2.44.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0757dd9a-deec-4904-61ac-7a22cc588a9d.png)

### double click at
対象の要素（リンク、ボタン、チェックボックス、ラジオボタンなど）をダブルクリックします。 
クリックするポイント(座標)を指定できます。対象要素に対して相対的で、例えば左上隅は 0,0になります。

【コード】
![スクリーンショット 2019-09-08 2.44.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/2d32cb26-61dd-d427-f208-304e6305238a.png)

### mouse down
マウスの左ボタンをクリックした状態にします。(クリックしたまま)

【コード】
以下の例では、 マウスダウン/マウスアップでスライダーを動かせるデモ http://only-testing-blog.blogspot.com/2014/09/selectable.html を使用しています。
![スクリーンショット 2019-09-08 2.56.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ebbf53b0-bef2-5131-8b37-287217ef8762.png)

### mouse down at
マウスの左ボタンをクリックした状態にします。(クリックしたまま)
クリックするポイント(座標)を指定できます。対象要素に対して相対的で、例えば左上隅は 0,0になります。

【コード】
以下の例では、 マウスダウン/マウスアップでスライダーを動かせるデモ http://only-testing-blog.blogspot.com/2014/09/selectable.html を使用しています。
![スクリーンショット 2019-09-08 2.55.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/70a22470-ba4b-e72f-846f-7f45d977321c.png)

### mouse move at
マウスを左ボタンを押したまま指定の場所まで移動します。

【コード】
以下の例では、 マウスダウン/マウスアップでスライダーを動かせるデモ http://only-testing-blog.blogspot.com/2014/09/selectable.html を使用しています。
![スクリーンショット 2019-09-08 3.01.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/55337e33-d185-5a18-7180-66328f1b4bce.png)

【実行結果】
`mouse down at` → `mouse move at` → `mouse up at`を組み合わせると以下のようなスライダーを動かすような操作も可能です。
(実行前)
![スクリーンショット 2019-09-08 10.38.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ba96f5c1-383e-5923-3f79-801922db5b8b.png)

(実行後)
![スクリーンショット 2019-09-08 10.37.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/aee3383f-af7b-e7a0-22cb-27bcef0f2a9e.png)

### mouse up
左マウスを(クリックされた状態から)離します。

【コード】
以下の例では、 マウスダウン/マウスアップでスライダーを動かせるデモ http://only-testing-blog.blogspot.com/2014/09/selectable.html を使用しています。
![スクリーンショット 2019-09-08 3.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/68b09cb6-08b6-0bae-a9a2-f76568f6b5d6.png)

### mouse up at
指定した場所で左マウスを(クリックされた状態から)離します。

【コード】
以下の例では、 マウスダウン/マウスアップでスライダーを動かせるデモ http://only-testing-blog.blogspot.com/2014/09/selectable.html を使用しています。
![スクリーンショット 2019-09-08 3.02.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/935f44f6-e811-feb1-2af2-9b962f956f82.png)

### mouse out
マウスカーソルを対象の要素から離します。

【コード】
以下の例では、Facebookというリンクにマウスカーソルを当てた状態からカーソルを離します。
これにより、リンクテキストのハイライトがなくなります。

![スクリーンショット 2019-09-05 1.14.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0f8f1e8b-3258-c303-e605-690548d0f773.png)

【実行結果】
(mouse out前)
![スクリーンショット 2019-09-05 1.12.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/dc30698c-ee94-8b35-ce5f-70d77dc50cb0.png)

(mouse out後)
![スクリーンショット 2019-09-05 1.12.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a26ea281-8a0c-5809-1df2-9e349f82ac31.png)


### mouse over
マウスカーソルを対象の要素に乗せます。

【コード】
以下の例では、Facebookというリンクにマウスカーソルを当てた状態になるため、リンクテキストがハイライトされます。
この後に `mouse out` すると、元のリンクテキストの色に状態に戻ります。

![スクリーンショット 2019-09-05 1.14.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c54e54de-07be-0bcb-dd77-01055641c2bd.png)

【実行結果】
(mouse over前)
![スクリーンショット 2019-09-05 1.12.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a26ea281-8a0c-5809-1df2-9e349f82ac31.png)

(mouse over後)
![スクリーンショット 2019-09-05 1.12.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/dc30698c-ee94-8b35-ce5f-70d77dc50cb0.png)

### drag and drop to object
ドラッグ＆ドロップの操作を行います。

【コード】
以下の例では、 ドラッグ＆ドロップができるデモサイト http://only-testing-blog.blogspot.com/2014/09/drag-and-drop.html を使用しています。
![スクリーンショット 2019-09-08 1.51.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4e4365ed-1101-b8c3-3d65-db1c6dbc3224.png)

【実行結果】
(実行前)
![スクリーンショット 2019-09-08 2.08.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/1cab9574-3776-0695-2d40-c825d25aa0ea.png)

(実行後)
![スクリーンショット 2019-09-08 2.09.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/f445a9f8-924b-64c4-3252-aed82c13ee25.png)

### submit
フォームを送信します。

【コード】
以下の例では、宿泊予約システムのデモサイト http://example.selenium.jp/reserveApp_Renewal/ を使用しています。
予約フォームを送信しており![スクリーンショット 2019-08-26 22.37.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/1a1b24f1-490e-0783-a44c-9300aafd8dcf.png)をクリックしたのと同じ挙動になります。

![スクリーンショット 2019-08-26 22.35.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5d20b119-68c8-c1b3-890c-a9bc1f6e945d.png)

## ループ処理

### times...end
ループ処理をします。ループする回数を指定します。

【コード】
以下の例では、5回 `echo` を実行するループ処理をしています。
![スクリーンショット 2019-08-24 13.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/02bc0331-4dc5-9905-0850-51e2bac1c5df.png)

【実行結果】
ログには以下のように5回 `echo` の結果が出力されています。
![スクリーンショット 2019-08-24 13.00.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/06b10b09-9ad4-c7af-6bf0-b923557fb071.png)

### while...end
ループ処理をします。ループする条件を指定します。

【コード】
以下の例では、5回 `echo` を実行するループ処理をしています。
![スクリーンショット 2019-08-24 12.43.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/71580c1a-25dc-5d6a-798d-978535ec9585.png)

【実行結果】
ログには以下のように5回 `echo` の結果が出力されています。
![スクリーンショット 2019-08-24 12.43.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a67f01c2-6ff7-3632-dde1-07e5b2f55345.png)

### do...repeat if
ループ処理をします。`while` と同様にループする条件を指定します。

【コード】
以下の例では、5回 `echo` を実行するループ処理をしています。
![スクリーンショット 2019-08-24 13.08.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a6868826-ea80-6157-6720-347dde9e0e4b.png)

【実行結果】
ログには以下のように5回 `echo` の結果が出力されています。
![スクリーンショット 2019-08-24 13.08.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/81f6c13a-9fce-40ee-80b2-68cf30629486.png)

### for each...end
配列に含まれている要素を順に取り出し、オブジェクトに含まれる要素が無くなるまで繰り返し行います。 

【コード】
以下の例では、"red", "yellow", "blue" という文字列を格納した配列colorsに対して、 `for each` コマンドを使用して順に `echo` したものです。
<img width="674" alt="スクリーンショット 2019-08-28 8.42.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0a23ae08-ae1e-49c6-e1f0-1104dfaba79e.png">

【実行結果】
ログの出力です。配列に含まれる要素数分ループしていることがわかります。
<img width="868" alt="スクリーンショット 2019-08-28 8.40.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/b130eb04-c2a7-701d-e8cc-f85b99c048fc.png">

## 条件分岐

### if...else if...else
条件分岐(条件毎の処理)を定義することができます。

【コード】
![スクリーンショット 2019-08-30 0.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/40668c55-387b-caef-a3b9-c856b08fd901.png)

## 値を(変数に)格納

### store
値を変数に格納することができます。

【コード】
以下の例では、 countという変数に5を格納しています。
![スクリーンショット 2019-08-30 0.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c4f8534b-ef88-ee39-7f22-0a7b576f0db5.png)

### store attribute
指定した要素の属性値を変数に格納します。

【コード】
以下の例では。バナーのhref属性の値を格納しています。
![スクリーンショット 2019-08-26 23.06.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/18c21cf7-02f1-7174-0ff1-3909193751cc.png)

【実行結果】
格納した値を `echo` でログに出力した結果です。
![スクリーンショット 2019-08-26 23.09.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/9f758fa4-eba5-7016-701a-a6b03092137d.png)
![スクリーンショット 2019-08-26 23.07.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/d7277db3-de94-49c4-e031-9b68ae49a291.png)


### store json
jsonのデータを変数に格納します。

【コード】
以下の例では、jsonデータを変数に格納して、 `echo` コマンドでjsonデータ中身の情報を出力しています。

![スクリーンショット 2019-09-05 0.02.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/cfe8e334-2c6f-e7d1-24de-249eef6acdf1.png)

【実行結果】
![スクリーンショット 2019-09-05 0.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e78768b6-eb0c-a37f-77c9-e87c2057caef.png)

### store text
指定した要素のテキストを変数に格納します。

【コード】
![スクリーンショット 2019-08-26 22.52.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0b072fcc-089c-7607-8f95-58f56d6a4820.png)

### store title
ページタイトルを変数に格納します。ロケータの指定は不要です。

【コード】
<img width="489" alt="スクリーンショット 2019-08-23 8.58.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/669ea423-b077-de8f-1bc7-f5303e8ac314.png">

### store value
指定した要素のvalueの値を変数に格納します。 `store text` と間違えないように注意してください。

【コード】
![スクリーンショット 2019-08-23 16.06.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5b6a9def-154b-69f2-970a-6ac35b1b0f29.png)


### store window handle
現在のウィンドウのハンドルを取得して変数に格納します。

【コード】
![スクリーンショット 2019-09-01 23.59.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/3bb9ab84-ebfa-d602-16ad-a92ecd238340.png)

### store xpath count
指定したxpathでマッチする要素数を変数に格納します。

【コード】
以下の例では、HTMLのh3の要素数をh3という変数に格納しています。(この場合、5が格納される)
![スクリーンショット 2019-08-23 16.13.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c2a9ad35-67fa-76d8-1881-70ddc9a3a3c3.png)
![スクリーンショット 2019-08-23 16.19.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/250203cf-a2fd-4722-56f2-e18f43a76b1b.png)

![スクリーンショット 2019-08-23 16.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0195bea3-fde7-e819-7fd2-8467e0bada77.png)

## 検証
はじめに、assert系コマンドとverify系コマンドの違いを説明します。
assert系コマンドとverify系コマンドは、どちらも条件の一致を検証するのに役立ちます。
違いは、verifyコマンドを使用していて条件を検証して条件が一致しない場合、ログ領域にエラーメッセージのみを表示しますがテストの実行は継続されます。
一方、assertコマンドを使用していて条件が一致しない場合、失敗した時点でテストが終了して後続のステップがあった場合でもそれ以降は実行されません。

以下、同じ系統のものでverifyとassertコマンドがある場合、【コード】や【実行結果】はverifyXXXのものだけを載せます。

### assert / verify
変数が期待値であることを確認します。

【コード】
以下の例では、h3要素の数を取得して、その数が期待値と合っているか検証しています。
![スクリーンショット 2019-09-06 0.13.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/871816c7-1495-0309-b260-8770dd4ba08f.png)

![スクリーンショット 2019-09-06 0.13.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ec8b1d09-9023-a604-cd0a-02a897a3bc59.png)



### assert alert
アラートに表示されたテキストを検証します。

【コード】
以下の例ではアラートのテキストが「Hi.. This is alert message!」であることを検証しています。
![スクリーンショット 2019-09-05 21.50.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/71cf6062-56f2-4369-8502-45c5955b4932.png)
![スクリーンショット 2019-09-05 21.50.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/f2cfcc41-d85c-81d9-4655-7a1a8f149515.png)

### assert checked / verify checked
指定した要素(チェックボックス)がチェック済であることを検証します。

【コード】
<img width="492" alt="スクリーンショット 2019-08-26 8.36.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/86a33243-2c8b-87b5-434c-8a918486181a.png">

### assert confirmation
確認ダイアログに表示されたテキストを検証します。

【コード】
以下の例では確認ダイアログのテキストが「Press 'OK' or 'Cancel' button!」であることを検証しています。
![スクリーンショット 2019-09-05 22.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4c66f6dd-9a29-fc63-43c1-990594b5ebab.png)
![スクリーンショット 2019-09-05 22.16.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5c664634-3eaf-9675-79cc-da1683ad17bb.png)

### assert editable / verify editable
指定した要素が編集可能か検証します。

【コード】
![スクリーンショット 2019-08-23 16.25.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/43e62a01-929a-2133-759b-0e5888c3527e.png)


### assert element present / verify element present
要素(element)が存在することを検証します。

【コード】
以下の例では、dataPickというidが付いた要素の有無を検証しています。
![スクリーンショット 2019-08-23 8.46.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/7f1a9b79-5946-4152-4561-874264587ef8.png)
![スクリーンショット 2019-08-22 23.02.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4b993a49-944e-d884-2398-4f8ef433ae9d.png)

### assert element not present / verify element not present
要素(element)が存在しないことを検証します。

【コード】
以下の例では、element_not_presentというidが付いた要素の有無を検証しています。
適当に付けた存在しないid(のついた要素)のため、このステップはPASSします。
![スクリーンショット 2019-08-28 23.07.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/01b0c3fb-a44a-e6e5-1c12-93b70dc7cd57.png)

### assert not checked / verify not checked
指定した要素(チェックボックス)がチェック済でないことを検証します。

【コード】
<img width="491" alt="スクリーンショット 2019-08-26 8.36.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/fed3f6a0-8084-1f0c-354c-87c19e35831a.png">

### assert not editable / verify not editable
テキストボックス、リストボックス、ドロップダウンなどの入力フィールドのみで使用できます。
対象の要素が編集できないことを検証します。

【コード】
![verify_not_editable.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/24b2c35f-daac-2f3d-7d39-bd9742406e1e.png)

### assert not selected value / verify not selected value
選択肢(select要素)で選択しているvalue値が期待値でないことを検証します。

【コード】
![スクリーンショット 2019-08-28 23.14.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/49f98414-1f50-8773-fb5d-35e81aea6075.png)

### assert not text / verify not text
指定したテキストがないことを検証します。

【コード】
以下の例では、h1要素のテキストが `予約エラー` でないことを検証しています。
<img width="494" alt="スクリーンショット 2019-08-26 12.58.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/3f5264f0-1e63-c973-ed83-e710144d39a6.png">


### assert prompt
プロンプトが表示されていること表示されているテキストも含めて検証します。

【コード】
以下の例では、プロンプトが表示されるデモサイト http://only-testing-blog.blogspot.com/2013/11/new-test.html を使用しています。
![スクリーンショット 2019-09-05 23.54.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ae8c6319-66a1-465e-caac-092af7f0b47c.png)

![スクリーンショット 2019-09-05 23.53.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/095c3096-9f18-06fa-f11f-401155285b67.png)

### assert selected label / verify selected label
選択肢(select要素)で選択しているラベルの値を検証します。

【コード】
![スクリーンショット 2019-08-23 16.39.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/233b5334-8a64-5e59-4533-7ce4a16e0f23.png)

### assert selected value / verify selected value
選択肢(select要素)で選択しているvalue値が期待値であることを検証します。

【コード】
デフォルトで1になっているため、2を選択して、
![スクリーンショット 2019-08-23 16.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5a54f5b4-7a21-5c96-310e-287f4f380f10.png)
その直後で、 `verify selected value` で2になることを検証しています。
![スクリーンショット 2019-08-23 16.42.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ad8c1598-f141-4f45-67d1-97efc7accb27.png)

### assert value / verify value
指定した要素のvalueが一致しているか検証します。
**テキストエリアに入力しているため、 `verify text` と間違えそうになるのでご注意！**

【コード】
![スクリーンショット 2019-08-23 16.27.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/353fe817-a174-5ac0-9b3f-ae97e1690d60.png)

### assert text / verify text
指定した要素のテキストが一致しているか検証します。

【コード】
![スクリーンショット 2019-08-23 16.32.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4af387fd-c279-e364-c411-8f81c8a3bbfd.png)

### assert title / verify title
ページタイトルを検証します。
![スクリーンショット 2019-08-22 22.30.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/6b7a2fed-bbdd-f0e3-7631-0f861c35977b.png)

【コード】
![スクリーンショット 2019-08-22 22.34.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/48f3ab13-e83d-0471-8c94-997cf6803fd7.png)


## ブラウザ本体の操作/制御

### open
ブラウザで指定したページをロードします。
baseURLを参照するため、パスのみ指定すれば良いです。

【コード】
![スクリーンショット 2019-08-24 13.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/26198793-5e92-e517-ebae-69fdd5c04451.png)


### close
ブラウザを終了します。

【コード】
![スクリーンショット 2019-08-23 16.48.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/10f5a2a2-ac5f-4dfd-ac2d-704adb55d33a.png)

### select window
ウィンドウロケーターを使用してポップアップウィンドウを選択します。
ポップアップウィンドウが選択されると、すべてのコマンドがそのウィンドウに移動します。
ウィンドウロケーターは、ハンドルを使用してウィンドウを選択します。

【コード】
Qiitaを開いた後に、最初に開いていたGoogleに戻します。
![スクリーンショット 2019-09-08 19.54.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/40644512-1f2b-99b6-e641-8165d206d67b.png)

【実行結果】
![スクリーンショット 2019-09-08 19.44.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/55f6658e-2c53-03c3-934f-3541d508a912.png)

### set window size
ブラウザのウィンドウサイズを指定します。

【コード】
![スクリーンショット 2019-08-24 13.21.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/f6b20c92-0566-5910-b63c-88ead4359ea3.png)

【実行結果】
(1200x780で指定した場合)
![スクリーンショット 2019-08-24 13.21.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a641f350-046a-188c-81a6-96f34bd22dad.png)

(200x780で指定した場合)
![スクリーンショット 2019-08-24 13.21.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/ec6cfd28-a8b5-3b0d-0f4d-9469d7742df0.png)

## Javascriptの実行

### execute script
現在選択されているフレームまたはウィンドウのコンテキストでJavaScriptのスニペットを実行します。
スクリプトフラグメントは、匿名関数の本体として実行されます。
戻り値を変数に保存する場合は、Targetに「return」キーワードを使用し、Valueに変数名を指定します。

【コード】
以下の例では、 `count` という変数に5を格納しています。
![スクリーンショット 2019-08-25 23.57.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/2f859949-1c20-0a06-d624-6706ef762d6c.png)

また、functionを定義することもできます。
以下は。日付を取得するfunctionを定義した例です。
![スクリーンショット 2019-09-06 0.05.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a956fa6d-915c-6147-0a05-5b6be4fac464.png)


### execute async script
Javascriptの非同期処理を行います。

【コード】
![スクリーンショット 2019-09-06 0.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e7696c98-89fc-3381-3175-b9ffc2c816a7.png)

【実行結果】
ブラウザのconsole log
![スクリーンショット 2019-09-06 0.41.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/9d7ed7dc-68d2-8fce-429b-396965a31976.png)


### run script
現在のテストウィンドウの本文に新しい `<script>` タグを作成し、指定したテキストをコマンドの本文に追加します。

【コード】
以下の例では、(無駄にw)Javascriptを使って 「戻る」ボタンをクリックしています。

![スクリーンショット 2019-08-26 23.42.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/2ef14fe8-5f7d-675e-ba3f-7bca2fe7a2d5.png)
![スクリーンショット 2019-08-26 23.42.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/7450935e-188d-c803-4982-23e46f127c86.png)

## ログ出力

### echo
コンソールにログを出力します。

【コード】
以下の例では、 `store title` で ページタイトルを `title` という変数に格納したものを `echo` しています。
<img width="487" alt="スクリーンショット 2019-08-23 9.00.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e49aeab4-db58-8c87-64b4-bbe7816efa33.png">

【実行結果】
<img width="1009" alt="スクリーンショット 2019-08-23 12.57.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4764bb4b-b3e6-5cb3-4f7e-65c59271bfb5.png">


## 待機処理

### wait for element editable
`wait for element editable` コマンドは、対象の入力テキストボックスが編集可能になるまで待機します。
対象の要素が編集可能になると、次のステップに移ります。また、このコマンドは入力フィールドのみで機能します。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2014/01/textbox.html というデモサイトで15秒後に編集可能になるような仕掛けがされている入力テキストボックス ( `css=#text2` )を対象としています。
また、タイムアウトの時間はデフォルトの30秒(30000ms)としています。
<img width="423" alt="スクリーンショット 2019-09-04 8.52.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/4bd2c7cf-b4c9-4233-892b-83bb6909a076.png">

<img width="498" alt="スクリーンショット 2019-09-04 8.56.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/0f4d96ae-f24d-9a0d-619b-78311bd70002.png">

### wait for element not editable
`wait for element not editable` コマンドは、対象の入力テキストボックスが編集不可能になるまで待機します。
対象の要素が編集可能になると、次のステップに移ります。また、このコマンドは入力フィールドのみで機能します。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2014/01/textbox.html というデモサイトで15秒後に編集不可能になるような仕掛けがされている入力テキストボックス ( `css=#text1` )を対象としています。

<img width="497" alt="スクリーンショット 2019-09-04 8.56.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e7834ebb-0e7a-0220-6086-648181913ef6.png">


### wait for element not present
要素が存在しなくなるまで待機します。

【コード】
以下の例では、「Time left: 10 seconds」(XXの部分は10→0にカウントダウンします)と表示されたテキストが表示されなくなるまで待機します。(実質1秒)
![スクリーンショット 2019-09-01 23.56.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5214047a-995b-49f1-0132-22abc7318e2c.png)

### wait for element not visible
`wait for element not visible` コマンドは、ページからの要素が非表示になるまで待機します。
対象の要素が非表示になると、次のステップに移ります。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2014/01/textbox.html というデモサイトで15秒後に非表示になるような仕掛けがされている入力テキストボックス ( `css=#text4` )を対象としています。15秒後にidがhidden2に変わるため、下記のようにcssセレクタを指定しています。
![not_visible.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/e6279fc8-987c-c62d-540f-8a76d622dfdb.png)

### wait for element present
要素が存在するまで待機します。

【コード】
以下の例では、「Time left: 10 seconds」と表示されたテキストが10秒後に「Ready!」と表示に変わるまで待機します。
ページ遷移4秒後：![スクリーンショット 2019-09-01 23.44.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/a718908f-9fe2-3622-0d28-ae3c694ab213.png)
ページ遷移10秒後：![スクリーンショット 2019-09-01 23.44.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/d489211d-0586-d309-c6e0-54c68a22588e.png)

![スクリーンショット 2019-09-01 23.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/71319193-495b-297a-8d5a-bb0884c6ec4e.png)

### wait for element visible
`wait for element visible` コマンドは、ページに要素が表示されるまで待機します。
対象の要素がページに表示されると、次のステップに移ります。

【コード】
以下の例では、 http://only-testing-blog.blogspot.com/2014/01/textbox.html というデモサイトで15秒後に表示されるような仕掛けがされている入力テキストボックス ( `css=#text3` )を対象としています。
![visible.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/6a419a5a-3e27-8d1b-72c7-358e4964f36e.png)

### pause
明示的な待機を挟みます。
ただ、 SeleniumIDEのコマンドには、暗黙的な待機が組み込まれているため、 どうしても解決しない場合にのみ使うのが良いです。 例えば、 `wait for...` のような〜の状態まで待つというコマンドが用意されています。
初めて `pause` コマンドを選択すると次のようなメッセージが表示されます。

```
There are implicit waits built into the IDE commands.
If that doesn't get the job done for you then check out the explicit wait commands.
They start with the words `wait for element` (e.g., `wait for element visible`).

(日本語訳)
IDEコマンドには、暗黙的な待機が組み込まれています。
それでも問題が解決しない場合は、明示的な待機コマンドを確認してください。 
それらは「要素を待つ」という言葉で始まります（例えば、「要素が見えるまで待つ」）。
```

![スクリーンショット 2019-08-20 22.39.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/acc42cf6-a36e-1c09-950e-039beef766fc.png)

【コード】
以下の例では、明示的に1秒(1000ms)待機を挟んでいます。
![スクリーンショット 2019-08-26 0.02.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/6a10571b-d269-a2b9-7bbd-f7f311cc4b5d.png)


## その他

### set speed
テストの実行速度を設定します。単位はミリ秒(ms)

【コード】
以下の例では、2秒(2000ms)を設定した例でステップ毎に2秒の待機を挟みます。
![スクリーンショット 2019-08-25 23.23.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/c5baadec-fa95-2e84-ff67-b6a153bf5a2e.png)

### run
テストケースを再利用(呼び出し)することができます。
以下の例では、 `loop scripts` を別のテストケースから呼び出しています。
これを活用すれば、共通部分をテストケースとして切り出すなどしておけば。同じようなシチュエーションのテストの場合に冗長なコードを書かなくて済みます。

【コード】
![スクリーンショット 2019-08-25 23.33.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/16843714-36d8-b945-5f4b-b1f5773ec3f9.png)

### select frame
現在のウィンドウ内のフレームを選択します。
0を起点とするインデックス番号でフレームを選択できます。
例えば、 最初のフレームは `index = 0` 、3番目のフレームは `index = 2` を選択します。
また、対象を `relative = parent` にすると親フレームを選択でき、 `relative = top` にするとページの先頭に戻ります。

【コード】
以下の例では、 複数のiframeが埋め込まれているデモサイト http://only-testing-blog.blogspot.com/2015/01/iframe1.html でframe毎にh3要素のテキストを検証しています。
![スクリーンショット 2019-09-08 11.03.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/b2157da1-c322-51c5-b5b4-bd91d7c7adcf.png)
![スクリーンショット 2019-09-08 19.57.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/b65e07ac-5112-79f9-5fb4-603f416be6ad.png)

### debugger
デバッグしたい箇所に挿入することでテスト実行を中断して、デバッグ作業を行うことができます。
Enterキーを押下することでデバッグモードを抜けます。
ブレークポイント機能(詳しくは [こちら](https://qiita.com/oh_rusty_nail/items/5b584c95e01759c00869#%E3%83%96%E3%83%AC%E3%83%BC%E3%82%AF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%82%92%E6%B4%BB%E7%94%A8))や一時停止ボタンからでも同じように一時停止することができます。

【コード】
<img width="494" alt="スクリーンショット 2019-08-28 12.58.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19778/5dd52884-d898-9bbc-6636-92b8cda0bbb3.png">
※ `debugger` は途中で一時停止してしまうため、サンプルコードには含んでおりません

# ただの宣伝
Seleniumに関する記事を書いたまとめです。書いたのは結構前ですがちょこちょこアップデートしています。

* [全国のSeleniumer必読](https://qiita.com/oh_rusty_nail/items/b8ba525d31ea7c522856)