Seleniumの動作(入力時例外/3:Firefox)

概要

テスト画面

Firefox

77.0.1
Version 78.01(64bit)

ブラウザのズーム倍率

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

Button

submitボタン

クリックできます。

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

<button>タグ

クリック可能です。

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

imageボタン

クリック可能です。

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

Link

クリック可能です。

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

Text

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

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

Select

選択できます。

option2選択
option2選択

Radio

クリック可能です。

クリックイベント発生
クリックイベント発生
クリックイベント発生
クリックイベント発生(label)

CheckBox

クリック可能です。

クリックイベント発生
クリックイベント発生
クリックイベント発生
クリックイベント発生(label)

実行結果

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

非表示要素

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

プルダウンメニュー

Menu

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

例外発生
例外発生
ElementNotInteractableExceptionMessage: Element <a id="child2" href="#nav_sample"> could not be scrolled into view
<traceback object at 0x0000015C4712C708>

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

is_displayed()=False
is_displayed()=False

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

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

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

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

Button

submitボタン

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

例外発生
例外発生
UnexpectedAlertPresentExceptionAlert Text: None
Message: Dismissed user prompt dialog: Menu1!
<traceback object at 0x0000015C47122748>

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

反応なし
クリック不可

Alertダイアログを表示した状態で、「id」ボタンを押します。
Chormeと同じく、要素の取得ができません。

submit取得で例外発生

なお、Firefoxでは、同じAlertダイアログを表示すると、2回目からチェックボックス付きのダイアログが表示されますが、同じ結果となります。(IEでは動作が異なります)

チェックボックス付きダイアログ表示
チェックボックス付きダイアログ表示
例外発生
例外発生

Link

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

Text

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

textbox

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

例外発生
例外発生
UnexpectedAlertPresentExceptionAlert Text: None
Message: Dismissed user prompt dialog: Menu1!
<traceback object at 0x0000015C471226C8>

Select

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

例外発生
UnexpectedAlertPresentExceptionAlert Text: None
Message: Dismissed user prompt dialog: Menu1!
<traceback object at 0x0000015C47045908>

Radio / CheckBox

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

実行結果

どちらのダイアログでも動作に差異はありません。

alertダイアログ(ノーマル)
初回表示
alertダイアログ(チェックボックス付)
2回目以降
コントロール 要素 操作 結果
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表示

Button

submitボタン

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

例外発生
例外発生
ElementClickInterceptedExceptionMessage: Element <input id="submit" class="btn-submit" type="submit"> is not clickable at point (831,372) because another element <div id="dialog" class="ui-dialog-content ui-widget-content"> obscures it
<traceback object at 0x00000231DA71EA08>

ダイアログを移動させて、submitボタンを表示すれば、クリック可能です。

クリックイベント発生

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

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

is_displayed()は「True(表示)」です。

is_displayed()=True
is_displayed()=True

Link

要素が隠れていると例外が発生します。

例外発生
例外発生

Text

ダイアログで要素が隠れている場合でも、文字入力可能です。

文字入力
文字入力
hoge
hoge

Select

要素が隠れていると、例外が発生します。

例外発生
例外発生
ElementClickInterceptedExceptionMessage: Element <select id="select"> is not clickable at point (831,483) because another element <p> obscures it
<traceback object at 0x00000231DBDCD4C8>

Radio / CheckBox

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

例外発生
例外発生

実行結果

コントロール 要素 操作 結果
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 Ex
Radio radio click Ex
label click Ex
CheckBox checkbox click Ex
label click Ex

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

ヘッダー/フッター

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

Button

submitボタン

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

例外発生
例外発生

Link

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

例外発生
例外発生

Text

textbox

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

文字入力
文字入力

Select

例外が発生しました。

例外発生
例外発生
lementClickInterceptedExceptionMessage: Element <select id="select"> is not clickable at point (831,922) because another element <div id="footer"> obscures it
<traceback object at 0x00000231DA78A108>

エラーメッセージに “not clickable" とあることからも、Firefoxのselect_by_index()メソッドは、クリックで実現しているように思います。

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 Ex
Radio radio click Ex
label click Ex
CheckBox checkbox click Ex
label click Ex