seleniumの概要とクラスについて



## はじめに
seleniumの概要とクラスに関しての備忘録です。
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
<br>

それにしてもseleniumだけでも奥が深い笑

## 🦁<INS>**結論**</INS>🦁
# seleniumとは
各要素に働きかけて、ある状況下を構築できて「特定のものを抽出」「特定の反応」などをレスポンスできるライブラリ
***
:::note info
押さえておくべき点
* 言語のサポート: Python, Java, C#, Rubyなど多くの言語で利用可能。
* ブラウザのサポート: Chrome, Firefox, Safari, Edgeなど主要なブラウザに対応。
* WebDriver: 各ブラウザに対応したドライバを使用してブラウザを制御できる。
* 録画・再生機能: Selenium IDEを使ってブラウザ操作を録画し、それを再生することができる。
* エレメントの操作: ページ上のエレメントを見つけて操作（クリック、入力、取得など）。
* セレクタの多様性: ID、クラス、XPath、CSSセレクタなどで要素を特定できる。
* 待機メカニズム:明示的待機（Explicit Waits）と暗黙的待機（Implicit Waits）の二つを使い分けることができる。
* スクリーンショット: テスト実行中の画面をスクショできる。
:::  
***

:::note warn
利用シーン
* スクレイピング
* 自動でテストをしたい時（新機能を追加時に一連の流れを構築したものを自動化）。
:::  
***
:::note alert
注意点
* ブラウザやドライバのバージョンによっては互換性の問題が生じる。
* ウェブページが更新されるとセレクタが変更されることがある。
* AjaxやJavaScriptによる動的な要素は特別な取り扱いが必要。
* WebDriverのfind_element_by_...メソッドは現在は非推奨になっている。driver.find_element(By.ID, "id”)この形式の使用を推奨。
:::  

***
## よく利用するクラス
よく使いそうなクラスを選定しました。
また、メソッド、プロパティ、セレクタなどの概念も勉強中のため、追記させてもらってます。

また、よく使うクラスは別でピックアップして備忘録を作成していく予定。

## WebDriver
ブラウザを制御するための主要なインターフェイス。ChromeDriver、FirefoxDriver、EdgeDriverなどがある。ほぼChromeで問題ない。（アプリなどを作成する場合にはクロスマッチングなど行う必要あり）
* get(url): 指定されたURLにブラウザをナビゲート。メソッド
* find_element_by_...: 様々な方法（ID、XPathなど）で要素を検索。メソッド
* current_url: 現在のブラウザのURLを取得します。プロパティ
* quit(): ブラウザセッションを終了し、関連ウィンドウを閉じます。メソッド
* screenshot(file_name): 現在のページのスクリーンショットを取得します。メソッド

***

## WebElement
ウェブページ上のHTML要素を表します。要素の検索、情報取得、操作などに使用。
* click(): 要素をクリック。メソッド
* send_keys(value): 要素にテキストを入力。メソッド
* text: 要素のテキストを取得。プロパティ
* get_attribute(name): 要素の特定の属性を取得。メソッド
* is_displayed(): 要素が表示されているかどうかをチェック。メソッド

***

## By
要素を検索するためのさまざまなメソッド（id、name、xpath、css selectorなど）を提供。
* ID: 要素のIDで検索。セレクタ
* XPATH: XPath式で要素を検索。セレクタ
* LINK_TEXT: 完全なリンクテキストで要素を検索。セレクタ
* PARTIAL_LINK_TEXT: 部分的なリンクテキストで要素を検索。セレクタ
* CSS_SELECTOR: CSSセレクタで要素を検索。セレクタ

***

## Select
<select>タグ（ドロップダウン）のオプションを扱うためのクラス。選択、選択解除、選択されているオプションの取得などができる。
* select_by_value(value): value属性を使ってオプションを選択。メソッド
* select_by_index(index): インデックスを使ってオプションを選択。メソッド
* select_by_visible_text(text): 表示テキストを使ってオプションを選択。メソッド
* deselect_all(): すべての選択を解除。メソッド
* options: ドロップダウンのすべてのオプションを取得。プロパティ

***


## Actions
高度なユーザーインタラクションを実行するためのクラス。ドラッグアンドドロップ、マウスの動き、複合アクションなどが含まれる。
* click(on_element=None): 要素をクリック。メソッド
* double_click(on_element=None): 要素をダブルクリック。メソッド
* drag_and_drop(source, target): 要素をドラッグして別の要素にドロップ。メソッド
* move_to_element(to_element): 要素の上にマウスを移動。メソッド
* context_click(on_element=None): 要素で右クリック（コンテキストクリック）。メソッド

***


## Alert
ブラウザのアラートダイアログとの対話を扱うクラス。アラートのテキストを取得したり、アラートを承認または拒否したりできる。（このページを離れますか？に対してのアクション）
* accept(): アラートを承認（OK）。メソッド
* dismiss(): アラートを拒否（キャンセル）。メソッド
* send_keys(keysToSend): アラートにテキストを入力。メソッド
* text: アラートのテキストを取得。プロパティ
***


## WebDriverWait
特定の条件が満たされるまで待機する際に使用します。要素の表示、プロパティの変更などを待機条件として設定できます。
* until(method, message=''): 指定された条件がtrueになるまで待機。メソッド
* until_not(method, message=''): 指定された条件がfalseになるまで待機。メソッド
***


## ExpectedConditions
WebDriverWaitとともに使用される、さまざまな標準的な待機条件を提供するクラス。
* presence_of_element_located(locator): 要素がDOM上に存在するまで待機。メソッド
* visibility_of_element_located(locator): 要素が表示されるまで待機。メソッド
* element_to_be_clickable(locator): 要素がクリック可能になるまで待機。メソッド
* alert_is_present(): アラートが表示されるまで待機。メソッド

***


## TakeScreenshot
スクリーンショットを取得するためのインターフェイス。WebDriverインスタンスがこのインターフェイスを実装している場合、スクリーンショットを取得できる。
* get_screenshot_as_file(filename): スクリーンショットをファイルとして保存。メソッド
* get_screenshot_as_png(): スクリーンショットをPNG形式のバイナリデータとして取得。メソッド
* get_screenshot_as_base64(): スクリーンショットをBase64エンコードされた文字列として取得。メソッド

***


## JavaScriptExecutor
JavaScriptを実行するためのインターフェイス。ウェブページに対してカスタムJavaScriptコードを実行する際に使用される。ページが完全にロードできてるのかを確認するときに使う。
execute_script(script, *args): 指定されたJavaScriptコードを実行できる。メソッド
***