Seleniumの動作(入力時例外/1:全体)

前回、状態別のSeleniumの動作を調査しました。今回は、それ以外でSeleniumで例外が発生する要因を調べます。

対象画面

テスト画面
ヘッダー/フッターはスクロール追従型(常に画面表示)です。

調査項目

次のケースを考えます。

  1. ブラウザのズーム倍率が100%以外
    Seleniumでは画面の倍率が100%でないと、正常に動作しないことがあります。
  2. 要素が非表示
    画面上、項目が表示されていないケースとして、プルダウンメニューを考えます。
  3. 要素の上に、別の要素が重なっている
    • ダイアログ(モーダル/モードレス)が表示されている場合
    • スクロール追従型のヘッダー/フッターで要素が隠れる

操作の実行

CodeCheckerを使用して、各ブラウザごとに、入力操作・属性の取得を実施します。

  1. Google Chome
  2. Firefox
  3. Microsoft Edge
  4. Internet Explorer

Seleniumのclick()メソッドのスクロール動作

Seleniumはクリック対象の要素が、表示しているエリアの外にある時、エリア内に表示するように自動でスクロールします。この動作が、ブラウザごとで異なります。要素が表示されているエリアの上にあるか、下にあるかでも動作が異なります。

click()メソッドのスクロール動作

実行結果

ブラウザのズーム倍率が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種類とも例外発生
  • 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

alertダイアログ(通常)
ノーマル
alertダイアログ(チェックボックス付)
Check付
コントロール 要素 操作 ノーマル 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*