Seleniumの動作(入力時例外/1:全体)
前回、状態別のSeleniumの動作を調査しました。今回は、それ以外でSeleniumで例外が発生する要因を調べます。
対象画面
テスト画面
ヘッダー/フッターはスクロール追従型(常に画面表示)です。
調査項目
次のケースを考えます。
- ブラウザのズーム倍率が100%以外
Seleniumでは画面の倍率が100%でないと、正常に動作しないことがあります。 - 要素が非表示
画面上、項目が表示されていないケースとして、プルダウンメニューを考えます。 - 要素の上に、別の要素が重なっている
- ダイアログ(モーダル/モードレス)が表示されている場合
- スクロール追従型のヘッダー/フッターで要素が隠れる
操作の実行
CodeCheckerを使用して、各ブラウザごとに、入力操作・属性の取得を実施します。
Seleniumのclick()メソッドのスクロール動作
Seleniumはクリック対象の要素が、表示しているエリアの外にある時、エリア内に表示するように自動でスクロールします。この動作が、ブラウザごとで異なります。要素が表示されているエリアの上にあるか、下にあるかでも動作が異なります。
実行結果
ブラウザのズーム倍率が100%以外
- send_keys(), Select選択はOK
- click()はFirefoxのみOK
Chrome, Edge, IEでは反応なし - Chrome, Edge, IEは同じ結果、Firefoxのみ異なる。
コントロール | 要素 | 操作 | chr | Fx | Edge | IE | 備考 |
---|---|---|---|---|---|---|---|
Button | submit | click | NG | OK | NG | NG | |
button | click | NG | OK | NG | NG | ||
image | click | NG | OK | NG | NG | ||
Link | normal | click | NG | OK | NG | NG | |
img | click | NG | OK | NG | NG | ||
css | click | NG | OK | NG | NG | ||
Text | textbox | send_key | OK | OK | OK | OK | |
password | send_key | OK | OK | OK | OK | ||
textarea | send_key | OK | OK | OK | OK | ||
Select | select | select | OK | OK | OK | OK | |
Radio | radio | click | NG | OK | NG | NG | |
label | click | NG | OK | NG | NG | ||
CheckBox | checkbox | click | NG | OK | NG | NG | |
label | click | NG | OK | NG | NG |
要素が非表示
- 状態別の動作でも検証したように、非表示属性(is_displayed=False)であれば、例外が発生。
コントロール | 操作 | chr | Fx | Edge | IE | 備考 |
---|---|---|---|---|---|---|
プルダウンメニュー | click | Ex | Ex | Ex | Ex | is_displayed()=False |
モーダルダイアログ(Alertダイアログ)表示
JavaScriptのalert()ダイアログが出現している状態で要素を操作します。
- Windows10では、FirefoxとIEで、ダイアログは2種類存在する。
- 通常ダイアログ
- 再表示を抑制するためのチェックボックス付きダイアログ
「このページにこれ以上メッセージの作成を許可しない」
- IE
- チェックボックス付きのAlertダイアログ
クリック可能(click()メソッドを発行すると、ダイアログが閉じクリックイベントが発生する) - チェックボックスのない、通常のダイアログ
例外発生 - confirmダイアログ、promptダイアログは2種類とも例外発生
- チェックボックス付きのAlertダイアログ
- IE以外
例外発生
Chrom / Firefox / Ege
コントロール | 要素 | 操作 | chr | Fx | Edge | 備考 |
---|---|---|---|---|---|---|
Button | submit | click | Ex | Ex | Ex | |
button | click | Ex | Ex | Ex | ||
image | click | Ex | Ex | Ex | ||
Link | normal | click | Ex | Ex | Ex | |
img | click | Ex | Ex | Ex | ||
css | click | Ex | Ex | Ex | ||
Text | textbox | send_key | Ex | Ex | Ex | |
password | send_key | Ex | Ex | Ex | ||
textarea | send_key | Ex | Ex | Ex | ||
Select | select | select | Ex | Ex | Ex | |
Radio | radio | click | Ex | Ex | Ex | |
label | click | Ex | Ex | Ex | ||
CheckBox | checkbox | click | Ex | Ex | Ex | |
label | click | Ex | Ex | Ex |
要素の取得自体が不可能
IE
コントロール | 要素 | 操作 | ノーマル | Check付 | 備考 |
---|---|---|---|---|---|
Button | submit | click | Ex | OK | |
button | click | Ex | OK | ||
image | click | Ex | OK | ||
Link | normal | click | Ex | OK | |
img | click | Ex | OK | ||
css | click | Ex | OK | ||
Text | textbox | send_key | Ex | OK | |
password | send_key | Ex | OK | ||
textarea | send_key | Ex | OK | ||
Select | select | select | Ex | OK | |
Radio | radio | click | Ex | OK | |
label | click | Ex | OK | ||
CheckBox | checkbox | click | Ex | OK | |
label | click | Ex | OK |
ノーマルの場合は、要素の取得自体が不可能
Check付は、要素がダイアログに隠れていても操作可能
モードレスダイアログ表示
jQueryでモードレスダイアログを表示し、要素をダイアログで隠した状態で操作します。
- ダイアログと要素が重なっていて、要素が見えない場合
- クリックで例外発生、文字入力は可能
- Select選択:Firefox以外は可能、Firefoxのみ例外発生
- ダイアログがあっても要素が見えていれば操作可能
- Chrome、Firefox、IEは同じ結果、Firefoxのみ異なる
コントロール | 要素 | 操作 | chr | Fx | Edge | IE | 備考 |
---|---|---|---|---|---|---|---|
Button | submit | click | Ex* | Ex* | Ex* | Ex* | * ダイアログと要素が重なって要素が見えない場合に例外発生 要素が見えていれば操作可能 |
button | click | Ex* | Ex* | Ex* | Ex* | ||
image | click | Ex* | Ex* | Ex* | Ex* | ||
Link | normal | click | Ex* | Ex* | Ex* | Ex* | |
img | click | Ex* | Ex* | Ex* | Ex* | ||
css | click | Ex* | Ex* | Ex* | Ex* | ||
Text | textbox | send_key | OK | OK | OK | OK | |
password | send_key | OK | OK | OK | OK | ||
textarea | send_key | OK | OK | OK | OK | ||
Select | select | select | OK | Ex* | OK | OK | |
Radio | radio | click | Ex* | Ex* | Ex* | Ex* | |
label | click | Ex* | Ex* | Ex* | Ex* | ||
CheckBox | checkbox | click | Ex* | Ex* | Ex* | Ex* | |
label | click | Ex* | Ex* | Ex* | Ex* |
ヘッダー / フッター
スクロール追従型のヘッダー/フッターで隠れている要素を操作します。
- モードレスダイアログと同じ結果
コントロール | 要素 | 操作 | chr | Fx | Edge | IE | 備考 |
---|---|---|---|---|---|---|---|
Button | submit | click | Ex* | Ex* | Ex* | Ex* | * ダイアログと要素が重なって要素が見えない場合に例外発生 要素が見えていれば操作可能 |
button | click | Ex* | Ex* | Ex* | Ex* | ||
image | click | Ex* | Ex* | Ex* | Ex* | ||
Link | normal | click | Ex* | Ex* | Ex* | Ex* | |
img | click | Ex* | Ex* | Ex* | Ex* | ||
css | click | Ex* | Ex* | Ex* | Ex* | ||
Text | textbox | send_key | OK | OK | OK | OK | |
password | send_key | OK | OK | OK | OK | ||
textarea | send_key | OK | OK | OK | OK | ||
Select | select | select | OK | Ex* | OK | OK | |
Radio | radio | click | Ex* | Ex* | Ex* | Ex* | |
label | click | Ex* | Ex* | Ex* | Ex* | ||
CheckBox | checkbox | click | Ex* | Ex* | Ex* | Ex* | |
label | click | Ex* | Ex* | Ex* | Ex* |
ディスカッション
コメント一覧
まだ、コメントがありません