はじめに
【seleniumクラスシリーズ】Actionクラスに関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
🦁結論🦁
様々なアクション(クリック、ドラッグ&ドロップなど)を一連の操作として自動化して実行できるクラス。
押さえておくべき点
- 複数のアクション(クリック、ドラッグアンドドロップなど)を組み合わせて一連の操作できる。
- マウスやキーボードの操作を模倣し、ブラウザでのユーザーの行動を再現できる。
- 複数のアクションを連鎖させることができ、コードの可読性を高められる。
- スクロール、ドラッグアンドドロップ、マウスオーバーなどの複雑な操作ができる。
- さまざまなブラウザとOSで一貫した操作が可能。
- 独自のアクションを定義し、組み込むことが可能。
- フレームやアラート内の要素に対する操作が可能。
- 複数のアクションを一度に実行することで、テストの実行時間を短縮できる。
利用シーン
- ユーザーがフォームにデータを入力する操作のシミュレーションする操作を自動化させたい。
- 要素をドラッグして他の位置にドロップする操作を自動化させたい。
- 右クリックメニューの操作を自動化させたい。
- マウスを特定の要素の上に移動させる操作を自動化させたい。
- ページ内のスクロールや要素へのスクロールを自動化させたい。
- ShiftやCtrlキーを使用した複数要素の選択操作を自動化させたい。
- テキストを選択してコピーする操作を自動化させたい。
- ファイル選択ダイアログを使用したアップロード操作を自動化させたい。
- Ajaxなどで動的に変更される要素への操作をさせたい。
注意点
- 特定のブラウザ、特定のバージョンによっては使えないこともある。
- Ajaxなどの動的要素に対応するため、適切な待機時間の設定は必要。
- 複合アクションはデバッグが困難な場合があるため可能な限り単純で明確なステップに分けて実装し、各ステップを個別にテストすることが重要。
- 使用するブラウザのドライバが最新か確認する必要(なるべく多くの機能、バグなどを減らせられる)
- ブラウザのセキュリティ制限によっては、一部のアクションが制限される場合がある。
メソッド一覧
import
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
click(on_element=None)
指定した要素をクリック。
actions.click(element).perform()
doubleClick(on_element=None)
指定した要素をダブルクリックします。
actions.double_click(element).perform()
contextClick(on_element=None)
指定した要素で右クリックします。
actions.context_click(element).perform()
clickAndHold(on_element=None)
指定した要素上でマウスボタンを押下し続けます。
actions.click_and_hold(element).perform()
dragAndDrop(source, target)
一つの要素を別の要素にドラッグアンドドロップします。
actions.drag_and_drop(source_element, target_element).perform()
moveToElement(to_element)
マウスカーソルを指定した要素に移動させます。
actions.move_to_element(element).perform()
keyDown(value, element=None)
指定したキーを押下します。
actions.key_down(Keys.SHIFT, element).perform()
keyUp(value, element=None)
押下したキーを離します。
actions.key_up(Keys.SHIFT, element).perform()
*sendKeys(keys_to_send)
指定した文字列を入力します。
actions.send_keys("Hello").perform()
release(on_element=None)
マウスボタンの押下を解除します。
actions.release().perform()
まとめ😸
ユーザーがアクションをするものを細かく模倣することができ、テストとしてもスクレイピングにしても自動化して操作することができるクラス。