はじめに
【seleniumクラスシリーズ】Byクラスに関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
🦁結論🦁
Seleniumの中で核となる機能の一つ。
再利用性と保守性が高く、様々なタイプのWeb要素を特定する際に有効なツール。
押さえておくべき点
- Byクラスは、要素を特定するためのメソッド。
- Byクラスは複雑なセレクタや動的な要素(JavaScript)なども特定することができる。
- Byクラスは再利用性と保守性も高い。
- 要素の特定を行う場合は基本Byクラスを用いて要素の選択をするべき。
- find_elementメソッドとチェーンして使うことが一般的。
- セレクタの種類が直感的で、理解しやすい。
- Byクラスは、Selenium WebDriverの核となる機能の一つ。
- Byクラスを利用する際にはインポートが必要。「from selenium.webdriver.common.by import By」
利用シーン
- ユーザー名やパスワード入力欄を特定する際に使用できる。
- ログインや送信ボタンなどを特定し、クリック操作を行える。
- ページ内の特定のリンクを選択するために使用できる。
- テーブルやリストから特定のデータを抽出する際に利用できる。
- フォーム送信後(例: IDとパスワード)のエラーメッセージを特定、取得し、その内容を検証する際にも利用できる。
- サイトのナビゲーションバーを操作する際に使用できる。
- 複数のタブ間を切り替える操作に利用できる。
- ポップアップやモーダルウィンドウの要素を操作する際に使用できる。
- 特定の要素が存在するかどうかを確認する際に使用できる。
注意点
- 動的に生成される要素の場合、セレクタが変更される可能性がある。
- 不適切なセレクタはパフォーマンスに影響を与える可能性がある。
- 複雑すぎるセレクタは、読みにくく、エラーの原因になる。
- アプリケーションの更新でセレクタが変更されることがある。
- 非表示の要素は、その状態では見つけることが困難であることがある。
よく使うセレクタ一覧
By.id("element_id”)
IDを使ったセレクタ
element_by_id = By.ID, "element_id"
By.className("class_name")
クラス名を使ったセレクタ
element_by_class_name = By.CLASS_NAME, "class_name"
By.tagName("tag_name")
タグ名を使ったセレクタ
element_by_tag_name = By.TAG_NAME, "tag_name"
By.name("element_name")
名前を使ったセレクタ
element_by_name = By.NAME, "element_name"
By.linkText("link_text")
リンクテキストを使ったセレクタ
element_by_link_text = By.LINK_TEXT, "link_text"
By.partialLinkText("partial_link_text")
部分リンクテキストを使ったセレクタ
element_by_partial_link_text = By.PARTIAL_LINK_TEXT, "partial_link_text"
By.cssSelector("css_selector")
CSSセレクタを使ったセレクタ
element_by_css_selector = By.CSS_SELECTOR, "css_selector"
By.xpath("//tag[@attribute='value']")
XPathを使ったセレクタ
element_by_xpath = By.XPATH, "//tag[@attribute='value']"
By.xpath("//*[@attribute='value']")
属性を使ったXPathセレクタ
element_by_xpath_attribute = By.XPATH, "//*[@attribute='value']"
By.xpath("//*[contains(text(),'partial_text')]")
テキスト内容を使ったXPathセレクタ
element_by_xpath_text = By.XPATH, "//*[contains(text(),'partial_text')]"
まとめ
様々な要素を特定するにはByクラスを使うって行うべき。
またフォームなどの送信によるエラーメッセージなども捉えることができる。