当ページでアクセス数の多いSeleniumBasic(Edge/Chrome)自動操作・スクレイピングの記事をまとめます
他サイトに比べ圧倒的な記事量、シンプルな作りのページなので理解しやすいと考えます
事前準備
Edge/Chrome起動、終了 基本的な動き
- Edge/Chromeを起動する
- Edge/Chromeを終了する
- Edge/Chromeで自動操作→手動操作→自動操作する
- ブラウザの読み込み待ちをする
- 指定要素まで画面スクロールさせる【scrollIntoView】
- 既に起動しているブラウザを操作する(Edge/Chrome)
- 既存のプロファイルを使用する(Edge/Chrome)
- ブラウザを非表示で操作する(Edge/Chrome)
Webページをクリックやログインする
- 基本のクリック
・FindElementById
・FindElementsByName
・FindElementsByClassName - Submitボタン
- aタグ
- id要素やName要素が存在しない場合
- リンクテキストを部分一致で指定して操作する【FindElementsByPartialLinkText】
- リンクテキストを完全一致で指定して操作する【FindElementByLinkText】
- CSSセレクタ(css selecter)を使用してクリックする
- Xpathを使用してクリックする
- 現在開いているタブとは違う新しい別タブでページを開く
- マウスオーバーする
Webページのデータを取得する
- データを取得する
・innerText
・innerHTML
・outerText
・outerHTML - ページ全体のデータを取得する【PageSource】
・head要素
・Body要素 - ページ情報を取得する
・Webページのタイトル
・WebページのURL - 要素数を数える【Count】
- 指定要素が存在するかチェックする
- 指定要素の表示・非表示を判定する【IsDisplayed】
- 指定要素の有効・無効を判定する【IsEnabled】
- ページ内のリンクURLを全て取得する
- クッキーを削除する【DeleteAllCookies】
- テーブルデータからデータを取得する【For】
- テーブルデータからデータを抜き出す【.AsTable】
- セレクトボックスの選択中のデータを取得する
- セレクトボックスの選択肢を配列で取得
- ラジオボタンの状態を取得する
- CSSセレクタを使用してデータ取得する(単独/複数)
- 画面キャプチャ・スクリーンショットを行う【TakeScreenShot】(表示画面)(画面全体)
→取得後エクセルへ貼付
Webページへ入力、選択、解除する
- テキストボックスに入力する
- テキストボックスの入力値を消去する
- パスワードボックスへ入力する
- パスワードボックスの入力値を消去する
- Enterなどの特殊キーを入力する【Keys】
- Ctrl+CやCtrl+Aなどの複数キーを押下する【Keyboard.KeyDown】
- SendKeysをJavaScript経由で反映する
- チェックボックスを選択・解除する
- ラジオボタンを選択・解除する(JavaScriptで選択・解除する)
- セレクトボックスを選択・解除する
Webページへアップロード/ダウンロード
- GET送信する
- ファイルアップロードする
- ファイルアップロードする(ファイルダイアログが開かない場合)
- ファイルをダウンロードする
- ファイルのダウンロード先を変更する(Edge/Chrome)
- ブラウザの画面を印刷する
- ブラウザの画面の印刷設定を行う
Webページのフレーム対応
実行時エラーに負けない
- ブラウザが起動してもすぐ消えてしまう
- 普段使用しているブラウザを起動しようとするとエラー発生する
- invalid selector: Compound class names not permitted
- SessionNotCreatedException
- SeleniumError elements click intercepted is not clickable at point(x,y)
- 実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません
- 実行時エラー-2146233080 インデックスが配列の境界外です
- 実行時エラー2146232576オートメーション エラー
- 実行時エラー21 TimeoutError The driver failed to open listening port 127.0.0.1:57589 within 10s
- 実効時エラー 0 SeleniumError element not interactable
- 実効時エラー13 ERR_INTERNET_DISCONNECTED
その他
- ブラウザの基礎機能を使用する
・戻るをクリックする
・進むをクリックする - 前のタブに移動する【SwitchToPreviousWindow】
- 次のタブに移動する【SwitchToNextWindow】
- 名前指定してタブ移動する【SwitchToWindowByTitle】
- ブラウザでアラート表示を制御する【SwitchToAlert】
- ブラウザでJavaScriptのアラート(Alert)表示する
- ブラウザでJavaScriptの確認ダイアログ(comfirm)表示する
- ブラウザでJavaScriptのテキスト入力ダイアログ(prompt)表示する
- アラートの有無を確認する
- Proxyサーバーを使用する(Edge/Chrome)
- シークレットモードで起動する(Edge/Chrome)
- モバイルサイズで起動する(Edge/Chrome)
- ローカルのHTMLファイルを表示する
- 画面表示サイズを変更する
・最大化をする
・指定サイズにする - 画面表示倍率を変更する
- 再読込(リフレッシュ)する
- UserAgent(UA)を偽装する(Edge/Chrome)
- ブラウザのVerを取得する
- 自動テストソフトウェアによって制御されていますを非表示にする(Edge/Chrome)
SeleniumBasicについて
Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。
但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント