実装について - 24000/ChromeControler-No-Selenium-WebDriver-VBAJSON GitHub Wiki


現在実装されているメソッド


【ChromeDriver】【EdgeDriver】


【Property】

  • Property Get URL() As String

<説明>現在のURLを取得

  • Property Get QueryString() As Object

<説明>現在のURLに含まれるクエリ文字列を辞書(key=パラメータ名, value=値)として取得


【Method】

  • Function GetValueFromQueryString(KeyName As String) As String

<説明>現在のURLに含まれるクエリ文字列からKeyを指定し値を取得
<戻り値>引数で指定されたkeyに対する値
<引数1>KeyName = 取得したいkey名を指定。

  • Sub URLOpen(url As String)

<説明>指定のURLを開く(自動でCompleteまで待機)
<引数1>url = 開きたいURLを指定。

  • Sub ExecuteJavaScript(Script As String)

<説明>JavaScriptコードの実行
<引数1>Script = 実行したいJavaScriptコードを指定。
※コード内の文字列は'(シングルクォート)で囲う必要あり

  • function ExecuteCDP(CDPMethodJson As String) as String

<説明>CDPMethodの直接実行
<戻り値>CDPメソッドの実行結果としてブラウザから返されるJSON文字列
<引数1>CDPMethodJson = 実行したいCDPメソッドのJSON文字列。
※JSON文字列内でパス指定する場合、\はエスケープして\\にする必要あり。

  • Function FindElementById(Id As String) As IWebElement

<説明>要素の取得(Id属性値で指定)
<戻り値>取得されたWebElement
<引数1>Id = 取得したい要素の「Id属性値」を指定

  • Function FindElementByXpath(xpath As String) As IWebElement

<説明>要素の取得(Xpathで指定)
<戻り値>取得されたWebElement
<引数1>xpath = 取得したい要素の 「完全なXpath」 「XPath」を指定
※2023/12/6 完全なXpath以外に通常のXpathにも対応
※注意:("//*[@id=""content""]/・・・") ←XPaht内の文字列は""で囲む

  • Function FindElementByName(name As String) As IWebElement

<説明>要素の取得(name属性で指定)
<戻り値>指定のname属性で取得される初めのWebElement
<引数1>name = 取得したい要素の「name属性」を指定

  • Function IsExistsElementByXpath(xpath As String)

<説明>要素の存在確認(Xpathで指定)
<引数1>xpath = 存在を確認したい要素の 「完全なXpath」 「XPath」を指定
※2023/12/6 完全なXPath以外に通常のXPathにも対応

  • Function IsExistsElementById(Id As String)

<説明>要素の存在確認(Id属性の値で指定)
<引数1>Id = 存在を確認したい要素の「Id」属性の値を指定

  • Function IsExistsElementByName(name As String)

<説明>要素の存在確認(Name属性の値で指定)
<引数1>name = 存在を確認したい要素の「Name」属性の値を指定

  • Sub WaitForElementToAppearByXpath(xpath As String, maxWaitTime_sec As Long)

<説明>要素の出現を最大指定秒数待つ(Xpathで指定)
<引数1>xpath = 出現を待ちたい要素の 「完全なXpath」 「xpath」を指定
※2023/12/6 完全なXPath以外に通常のXPathにも対応
<引数2>maxWaitTime_sec = 最大待機時間を秒で指定。
            この秒数を過ぎるとエラーメッセージを表示し、強制終了。

  • Sub WaitForElementToAppearById(Id As String, maxWaitTime_sec As Long)

<説明>要素の出現を最大指定秒数待つ(Idで指定)
<引数1>id = 出現を待ちたい要素の「Id」属性の値を指定
<引数2>maxWaitTime_sec = 最大待機時間を秒で指定。
            この秒数を過ぎるとエラーメッセージを表示し、強制終了。

  • Sub WaitForElementToAppearByName(name As String, maxWaitTime_sec As Long)

<説明>要素の出現を最大指定秒数待つ(nameで指定)
<引数1>name = 出現を待ちたい要素の「name」属性の値を指定
<引数2>maxWaitTime_sec = 最大待機時間を秒で指定。
            この秒数を過ぎるとエラーメッセージを表示し、強制終了。

  • Function FindElementsByTagName(tagName As String) As IWebElements

<説明>要素群の取得(tagNameで指定)
<戻り値>取得されたWebElements
<引数1>tagName= 取得したい要素群の「タグ名」を指定

  • Function FindElementsByClassName(className As String) As IWebElements

<説明>要素群の取得(classNameで指定)
<戻り値>取得されたWebElements
<引数1>className= 取得したい要素群の「クラス名」を指定

  • Function FindElementsByXPath(xPath As String) As IWebElements

<説明>要素群の取得(XPathで指定)
<戻り値>取得されたWebElements
<引数1>className= 取得したい要素群を対象とする「XPath」を指定

  • Sub SwitchFrameByNameOrURLOrIndex(value As Variant)

<説明>iframeの切り替え
<引数1>value = 切り替えたいフレームのName属性値 or URL or Index を指定。
        ※URLの指定はうまくいかないケースが多い。

  • Sub DebugPrintAccessibleFrameInfo()

<説明>アクセス可能なIframeのName,URL,Indexをイミディエイトに出力。
※SwitchFrameByNameOrURLOrIndexで指定できる内容を開発者が確認するためのメソッド。
 表示される内容はChromeから取得される情報。

  • Sub SwitchFrameByIframeElement(IframeElement As IWebElement)

<説明>iframeの切り替え
<引数1>IframeElement = 切り替えたいフレームElement を指定。
        

  • Sub SwitchFrameToDefault()

<説明>デフォルトフレームへ切り替え

  • Sub HandleAlertDialog()

<説明>アラートダイアログのOKボタン押下。

  • Sub SleepByWinAPI(milliSecond As Long)

<説明>指定ミリ秒数待つ
<引数1>milliSecond = 待機したい時間数をミリ秒で指定。

  • Sub SwitchTabByIndex(Index As Long)

<説明>操作対象のタブを番号で指定し切り替え。
<引数1>Index = 操作対象としたいタブの番号を指定。(一番左のタブを1とする)

  • Sub ScrollWindow(yPixel As Long, Optional xPixel As Long = 0)

<説明>ブラウザをスクロールする
<引数1>yPixel = 縦方向にピクセル単位でスクロールしたい値を指定
<引数2>Optional xPixel = 横方向にピクセル単位でスクロールしたい値を指定(規定で0)

  • Sub ShowWindow(size As WindowSize)

<説明>ウィンドウのサイズ変更(ノーマル、最小化、最大化)を行う
<引数1>size = 以下から操作の種類を指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
normal :ウィンドウが最小化、最大化されている場合、元のサイズと位置に復元
minimize :ウィンドウの最小化
maximize :ウィンドウの最大化

  • Sub CloseWindow()

<説明>ブラウザを閉じる

  • Sub Back()

<説明>ブラウザバック

  • Sub Forward()

<説明>ブラウザフォワード

  • Function ScreenShotSaveAsFile(Optional folderPath As String = "", Optional fileName As String = "", Optional imageFormat As Image = Image.png) As String

<説明>スクリーンショットを取得して画像ファイルとして保存。
<戻り値>保存した画像ファイルのフルパス(利便性のために戻しているだけなので、不要であれば受け取る必要なし)
<引数1>folderPath = 保存するフォルダパスを指定。(省略時はThisworkbook.Pathが適用)
<引数2>fileName = 保存するファイル名を指定。(省略時は「screenshot(IncrementNumber)」という名前が適用)
<引数3>Image = 以下から画像の種類を指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能。省略時はpngが適用)
jpeg : .jpegで保存
png :.pngで保存
webp :.webpで保存

  • Function ScreenShotPasteToSheet(left As Single, top As Single, Optional width As Single = 0, Optional height As Single = 0, Optional sheetName As String = "", Optional imageFormat As Image = Image.png) As Shape

<説明>スクリーンショットを取得してワークシートに貼り付け。
<戻り値>貼り付けた画像のShapeオブジェクト。(利便性のために戻しているだけなので、不要であれば受け取る必要なし)
<引数1>left = 貼り付け位置をシートの上の左端からのポイントで指定。
<引数2>top = 貼り付け位置をシートの上の上端からのポイントで指定。
<引数3>width = 貼り付ける画像の幅をポイントで指定(省略時は元の画像の幅が適用)
<引数4>height = 貼り付ける画像の高さをポイントで指定(省略時は元の画像の高さが適用)
<引数5>sheetName = 貼り付けを行うシート名を指定。(省略時はActiveSheetが適用)
<引数6>ImageFromat = 以下から画像の種類を指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能。省略時はpngが適用)
jpeg : .jpeg形式でスクリーンショット取得したものを貼り付け
png :.png形式でスクリーンショット取得したものを貼り付け
webp :.webp形式でスクリーンショット取得したものを貼り付け

  • Function GetSecureRandomNumber(count As Long) As Variant

<説明>暗号論的疑似乱数の生成
<戻り値>引数で指定した個数の乱数をもつCollectionオブジェクト
<引数1>count = 生成したい乱数の数を指定

  • Function GetURLSafeRundomString(charNum As Long) As String

<説明>暗号論的疑似乱数を元にランダム文字列を生成
<戻り値>引数で指定した文字数のランダム文字列
<引数1>charNum = 生成したいランダム文字列の文字数を指定

  • Function GetBase64URLEncodedSHA256(str As String) As String

<説明>引数に与えた文字列をSHA256でハッシュ化し、さらにBase64URLエンコードした値を生成
<戻り値>引数に与えた文字列をSHA256でハッシュ化し、さらにBase64URLエンコードした値
<引数1>str = 処理対象の文字列

  • Function EncodeURIConpornent(str As String) As String

<説明>引数に与えた文字列をURIエンコードした値を生成
<戻り値>引数に与えた文字列をURIエンコードした値
<引数1>str = 処理対象の文字列



【WebElement】

  • Sub Click()

<説明>要素をクリック

  • Sub SetText(text As String)※非推奨 過去バージョンとの互換性のために残されている

名前が不適切なため、全く同一機能のSetValueを用意。そちらを使用してください。

<説明>要素のValue属性に文字を設定
<引数1>text = 設定したい文字列を指定

  • Sub SetValue(value As String)

<説明>要素のValue属性に文字を設定
<引数1>value = 要素のvalue属性に設定したい文字列を指定

  • Sub SetTextContent(text As String)

<説明>要素のTextContentに文字を設定
<引数1>text = 要素のTextContentに設定したい文字列を指定

  • Sub SetValueViaPropertySetter(value As String)

<説明>要素のvalue属性に文字を設定(内部処理としてPropertySetter経由での設定)
※Reactで作成されたWebアプリのInputBoxが「SetValueメソッド(内部処理:Element.value = 値)」では動作しなかったため用意。
<引数1>value = 要素のvalue属性に設定したい文字列を指定

  • Sub SelectItemInSelectBoxByText(text As String)

<説明>文字列指定でSelectBoxの選択肢を選択
<引数1>text = SelectBoxで選択したい選択肢の文字列を指定(完全一致)

  • Function GetTextContent() As String

<説明>要素のTextContentを取得
<戻り値>要素のTextContent

  • Function GetAttribute(AttributeName As String) As String

<説明>要素の属性値を取得
<引数1>AttributeName = 属性名を指定
<戻り値>指定された属性の値。(指定された属性が存在しない場合、""が戻る)

  • Function SetAttribute(AttributeName As String,value As variant) As String

<説明>要素の属性値を設定
<引数1>AttributeName = 属性名を指定
<引数2>value = 引数1で指定した属性に対して設定する値を指定
<戻り値>指定された属性の値。(指定された属性が存在しない場合、""が戻る)

  • Public Function SetClassName(className As String) As String

<説明>要素のclass属性を設定
<引数1>className = 要素に設定したいクラス名を指定

  • Function GetProperty(PropertyName As String) As String

<説明>要素のプロパティ値を取得
<引数1>PropertyName = プロパティ名を指定
<戻り値>指定されたプロパティの値。(指定された属性が存在しない場合、""が戻る)

  • Function SetProperty(PropertyName As String,value As variant) As String

<説明>要素のプロパティ値を設定
<引数1>PropertyName = プロパティ名を指定
<引数2>value = 引数1で指定したプロパティに対して設定する値を指定
<戻り値>指定された属性の値。(指定された属性が存在しない場合、""が戻る)

  • Function GetSelectedValue() As String

<説明>SelectBoxの現在選択されている値(Value)を取得
<戻り値>SelectBoxの現在選択されている値(Value)

  • Function GetSelectedTextContent() As String

<説明>SelectBoxの現在選択されている値(TextContent)を取得
<戻り値>SelectBoxの現在選択されている値(TextContent)

  • Function FindElementByName(Name As String) As IWebElement


<説明>要素の取得(Nameで指定)
<戻り値>指定されたName属性値で初めに取得されたWebElement
<引数1>tagName = 取得したい要素の「Nmae」属性の値を指定

  • Function FindElementsByTag(tagName As String) As IWebElements

<説明>要素群の取得(tag名で指定)
<戻り値>取得されたWebElements
<引数1>tagName = 取得したい要素群の「タグ名」を指定

  • Sub SetFileToFileSelectInputButton(filePath As String)

<説明>ファイル選択ボタン(Input要素)でファイルを選択し設定する
<引数1>filePath = 設定したいファイルのフルパス

  • Sub ClickAndThenAlertDialogErase()

<説明>クリック後、制御を返さないダイアログが出現する場合に使用。
   ※制御を返すダイアログであれば、Clickメソッド後に、ChromeDriverのHandleAlertメソッドで処理可能。
    それでは対応できない場合に使用。
    クリック、ダイアログ処理を一つにまとめた処理。

  • Public Sub DispatchCDPMouseEvent(action As CDP_Mouse,point as ClickPoint = ClickPoint.Center)

<説明>要素にCromeDevtoolsProtocolのMouseEventを送信する。
<引数1>action = 以下から指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
LeftClick_XY :要素が画面の中心に来るように画面スクロールし、要素の中心点のX,Y座標を左クリック
LeftDoubleClick_XY :LeftClick_XYのダブルクリックバージョン
RightClick_XY :要素が画面の中心に来るように画面スクロールし、要素の中心点のX,Y座標を右クリック
ScrollToThisElement :要素が画面の中心に来るように画面スクロールのみ行う。

<引数2>optional point = クリック箇所を以下から指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
(規定値:Center)
Center :要素の幅、高さの中心
TopLeft :要素の左上
TopRight :要素の右上
BottomLeft :要素の左下
BottomRight :要素の右下

  • Public Sub DispatchJSInputEvent()

<説明>要素にJavaScriptのInputイベントを送信する。

  • Public Sub DispatchJSChangeEvent()

<説明>要素にJavaScriptのChangeイベントを送信する。

  • Public Sub DispatchJSFocusEvent()

<説明>要素にJavaScriptのFocusイベントを送信する。

  • Public Sub DispatchJSMouseEvent(action As JS_Mouse)

<説明>要素にJavaScriptのMouseイベントを送信する。
<引数1>action = 以下から操作の種類を指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
LeftClick :要素にJavascriptのMouseEvnet('click')を送信
LeftDoubleClick :要素にJavascriptのMouseEvnet('dblclick')を送信
LeftDown :要素にJavascriptのMouseEvnet('down')を送信
LeftPress :要素にJavascriptのMouseEvnet('press')を送信
Leftup :要素にJavascriptのMouseEvnet('up')を送信
Enter :要素にJavascriptのMouseEvnet('enter')を送信
Leave :要素にJavascriptのMouseEvnet('leave')を送信
Move :要素にJavascriptのMouseEvnet('move')を送信
Over :要素にJavascriptのMouseEvnet('over')を送信
Out :要素にJavascriptのMouseEvnet('out')イベントを送信

  • Public Sub DispatchJSKeyboardEvent(action As JS_Keyboard, KeyCode As Key, Optional alt As Boolean = False, Optional shift As Boolean = False, Optional ctrl As Boolean = False)

<説明>要素にJavaScriptのKeyboardイベントを送信する。
<引数1>action = 以下から操作の種類を指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
KeyDown :要素にJavascriptのKeyboardEvnet('down')を送信
KeyPress :要素にJavascriptのKeyboardEvnet('press')を送信
Keyup :要素にJavascriptのKeyboardEvnet('up')を送信

<引数2>key = 以下から送りたいKeyを指定(列挙体のため、Ctrl+Spaceでインテリセンスから選択可能)
Tab_Key , Enter_Key , shift_Key , Control_Key , Alt_Key ,
Escape_Key , Space_Key , PageUp_Key , PageDown_Key ,
ArrowLeft_Key , ArrowUp_Key , ArrowRight_Key , ArrowDown_Key ,
PrintScreen_Key , Delete_Key ,
Digit0 , Digit1 , Digit2 , Digit3 , Digit4 ,
Digit5 , Digit6 , Digit7 , Digit8 , Digit9 ,
KeyA , KeyB , KeyC , KeyD , KeyE , KeyF , KeyG ,
KeyH , KeyI , KeyJ , KeyK , KeyL , KeyM , KeyN , KeyO ,
KeyP , KeyQ , KeyR , KeyS , KeyT , KeyU , KeyV , KeyW , KeyX , KeyY , KeyZ

<引数3>alt = alt同時押しの指定
<引数4>shift = Shift同時押しの指定
<引数5>ctrl = ctrl同時押しの指定

  • Checkedプロパティ(Let・Get) As boolean

<説明>チェックボックスのチェック状態の取得、設定。

  • IsEnabledプロパティ(Getのみ) As boolean

<説明>要素が有効か無効かをBoolで取得。



【WebElements】

  • Function Count() As Long

<説明>要素数を返す
<戻り値>要素数

  • Function Item(index) As IWebElement

<説明>指定したIndexの要素を返す
<戻り値>Indexで指定された要素
<引数1>要素のIndex(0始まり)

⚠️ **GitHub.com Fallback** ⚠️