Seleniumの動作(入力時例外/2:Chrome)

概要

テスト画面

Google Chrome

83.0.4103.116(64bit)
Version 83.0.4103.116(64bit)

ブラウザのズーム倍率

「Cntl」+「-」キーで表示倍率を90%にします。

Button

submitボタン

クリックできません。

反応なし
反応なし

is_enabled()は「Ture(有効)」でした。

is_enabled=True
is_enabled=True

倍率を100%に戻すとクリックできます。

クリックイベント発生
倍率100%

<button>タグ

クリックできません。

反応なし
反応なし

imageボタン

クリックできません。

反応なし
反応なし

Link

3種類ともクリックできませんでした。

反応なし
通常リンク
反応なし
画像リンク
反応なし
CSSリンク

Text

3種類とも文字入力可能です。

hoge
textbox
hoge
password
hoge
textarea

Select

選択できます。

option2選択
option2選択

Radio

クリックできません。

反応なし
反応なし

ラベルをクリックしても、クリックイベントは発生しません。

反応なし
反応なし

CheckBox

クリックできません。

反応なし
反応なし

実行結果

コントロール 要素 操作 結果
Button submit click NG
button click NG
image click NG
Link normal click NG
img click NG
css click NG
Text textbox send_key OK
password send_key OK
textarea send_key OK
Select select select OK
Radio radio click NG
label click NG
CheckBox checkbox click NG
label click NG

非表示要素

プルダウンメニューがクリックできるかを確認します。

プルダウンメニュー

Menu

「Menu3」の「child2」をクリックします。
例外が発生しました。

例外発生
例外発生
ElementNotInteractableExceptionMessage: element not interactable
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x000001F423F894C8>

“is_displayed()"は「False(非表示)」でした。

is_displayed()=False
is_displayed()=False

プルダウンでない、通常のメニューはクリックできます。

クリックイベント発生
クリックイベント発生

要素の上に、別の要素が重なっている

ダイアログ表示(モーダル)

「Menu1」をクリックすると、JavaScriptのAlertダイアログが表示されます。
Alertはモーダルダイアログです。

alertダイアログ表示
alertダイアログ表示

Button

submitボタン

Alertダイアログが表示された状態で、submitボタンをクリックすると、ダイアログが閉じて例外が発生します。

例外発生
例外発生
UnexpectedAlertPresentExceptionAlert Text: Menu1!
Message: unexpected alert open: {Alert text : Menu1!}
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x000001F423F7D408>

なお、手動操作ではクリック不可でダイアログも閉じません。

クリック不可
クリック不可

状態(is_displayed)を取得しようとしても、同じ例外が発生します。
要素の取得自体ができません。

例外発生
例外発生
<button>タグ

Alertダイアログが閉じ、例外が発生します。

例外発生
例外発生
imageボタン

Alertダイアログが閉じ、例外が発生します。

例外発生
例外発生

Link

normal_link, img_link, css_linkとも例外が発生しました。

Text

Alertダイアログを表示した状態で、send_keys()を実行します。

textbox

Alertダイアログが閉じ、例外が発生しました。

例外発生
例外発生
UnexpectedAlertPresentExceptionAlert Text: Menu1!
Message: unexpected alert open: {Alert text : Menu1!}
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x000001F423FB8308>

Select

Alertダイアログが閉じ、例外が発生しました。

例外発生
例外発生
UnexpectedAlertPresentExceptionAlert Text: Menu1!
Message: unexpected alert open: {Alert text : Menu1!}
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x000001F423FB8308>

Radio / CheckBox

ボタンクリック、ラベルクリックとも、Alertダイアログが閉じ、例外が発生しました。

実行結果

コントロール 要素 操作 結果
Button submit click Ex
button click Ex
image click Ex
Link normal click Ex
img click Ex
css click Ex
Text textbox send_key Ex
password send_key Ex
textarea send_key Ex
Select select select Ex
Radio radio click Ex
label click Ex
CheckBox checkbox click Ex
label click Ex

要素の取得もエラーになる。
SeleniumではAlertダイアログが閉じるが、手動では閉じない

ダイアログ表示(モードレス)

「Menu2」をクリックすると、jQueryのモードレスダイアログが表示されます。

dialog表示
dialog表示

Button

submitボタン

ダイアログが重なっている状態で、submitボタンをクリックします。
例外が発生します。

例外発生
例外発生
ElementClickInterceptedExceptionMessage: element click intercepted: Element <input type="submit" id="submit" value="submit" class="btn-submit"> is not clickable at point (831, 371). Other element would receive the click: <div id="dialog" style="width: auto; min-height: 90px; max-height: none; height: auto;" class="ui-dialog-content ui-widget-content">...</div>
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x000002F721D2FA08>

画面上、submitボタンはダイアログで隠れています。
では、隠れていない場合はどうでしょうか?

ダイアログを移動させて、submitボタンを表示してから、クリックします。
クリックできました。

クリックイベント発生
クリックイベント発生

手動の場合もクリック可能です。

クリックイベント発生
クリックイベント発生

is_displayed()は「True(表示)」でした。

is_displayed()=True
is_displayed()=True
<button>タグ

<button>の下部が見えていますが、例外が発生します。

例外発生
例外発生

もう少し表示するとクリックできました。

クリックイベント発生
クリックイベント発生

Link

やはり要素が隠れているとクリックできません。

例外発生
例外発生

表示するとクリックできます。

クリックイベント発生
クリックイベント発生

Text

クリックと異なり、要素が隠れている場合でも、文字入力は可能です。

textbox
文字入力
hoge
hoge
password
文字入力
文字入力
textarea
文字入力
文字入力

Select

要素が隠れていても、選択可能です。

option2選択
option2選択
option2
「option2」

Radio / CheckBox

ButtonやLinkと同じく、隠れているとクリックできません。

例外発生
例外発生
Radio_3選択
Radio_3選択

実行結果

コントロール 要素 操作 結果
Button submit click Ex
button click Ex
image click Ex
Link normal click Ex
img click Ex
css click Ex
Text textbox send_key OK
password send_key OK
textarea send_key OK
Select select select OK
Radio radio click Ex
label click Ex
CheckBox checkbox click Ex
label click Ex

例外が起きるのは、ダイアログで要素が隠れている場合

ヘッダー/フッター

スクロール追従型のヘッダー/フッターで要素が隠れている場合を考えます。

Button

submitボタン

submitボタンをヘッダーに隠した状態でclickボタンを押します。
例外が発生しました。

submitボタン
例外発生
ElementClickInterceptedExceptionMessage: element click intercepted: Element <input type="submit" id="submit" value="submit" class="btn-submit"> is not clickable at point (831, 15). Other element would receive the click: <p id="sitename">...</p>
  (Session info: chrome=83.0.4103.116)
<traceback object at 0x0000015C11CB2688>

is_displayed() は「True」です。

is_displayed()=True
is_displayed()=True
<button>タグ
buttonタグ
例外発生
imageボタン
imageボタン
例外発生

Link

Linkをフッターに隠した状態でclickボタンを押します。
例外が発生します。

例外発生
例外発生

Text

ヘッダー/フッターで要素が隠れていても、文字入力可能です。

文字入力
文字入力
hoge
「hoge」
Select

選択可能です。

option2選択
option2選択
option2
option2

Radio / CheckBox

Radioボタンをフッターに隠して、click()メソッドを発行。
例外が発生します。

例外発生
例外発生
実行結果
コントロール 要素 操作 結果
Button submit click Ex
button click Ex
image click Ex
Link normal click Ex
img click Ex
css click Ex
Text textbox send_key OK
password send_key OK
textarea send_key OK
Select select select OK
Radio radio click Ex
label click Ex
CheckBox checkbox click Ex
label click Ex