Selenium(Edge/Chrome)

Chrome/EdgeでSendKeysをJavaScript経由で反映する【Selenium】【ExcelVBA】

Webページ内のテキストボックスパスワードボックスへ値を反映する方法はSendKeysで送るだけでした。
EnterキーやTabキーなどの特殊キーを反映することはこちらの記事
複数のキーをまとめて反映すること( Ctrl  + Ctrl  +  A)はこちらの記事でご紹介しました。

それでもSendKeysで文字入力が反映されない場合、JavaScript経由(ExecuteScript )で反映が可能です。

ExecuteScriptで文字を反映するサンプルコード

Dim driver As New WebDriver
Public Sub sample()
    '■ブラウザを起動
    driver.Start "chrome" 'Edgeの場合はdriver.start "edge"
    driver.Get "https://vba-create.jp/"
     
    Dim str As String: str = "abc"
    '■SendKeysで反映(反映時は文字追加)
    driver.FindElementsByName("s")(1).SendKeys str
    '■ExecuteScriptで反映(反映時は上書き)
    driver.ExecuteScript "document.getElementsByName('s')[0].value = arguments[0];", str
End Sub
    

注意点

  • 文字を反映したい要素が画面上に見えていないとエラーになる場合もある為、ウィンドウ最大化推奨です。
  • SendKeysは文字をキーボードで入力するイメージ(上書きする場合はClearが必要でした)
    ※ExecuteScriptの場合は値を直接反映のため、IE自動操作の.Valueと同じ動きです。

 

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

  1. 参考にさせていただきます。

    ちなみに、strに格納されている文字列に改行文字を含めることは可能なのでしょうか?
    (普通に vbCrLf などが入っているとエラーになるようでして。)
    もしご存じでしたらご教授ください。

    • 改行も含めてダメですか?以前どこかのサイトで行った記憶はあり、特にエラーが出なかった記憶があります。
      お問い合わせからご連絡頂ければ確認致します。

      • vba-createさま
        早速のご返信ありがとうございました。
        失礼いたしました。私の勘違いです。
        サンプルコードの方法で試しましたら、改行コードが含まれていても
        正しく処理されました。

        ありがとうございます!
        ※当方の勘違いコメントになりましたので、まとめて消去いただいて結構です。

    • 承知しました。
      コード参考になれば、ぜひスポンサーサイト様訪れたり、当方のamazonリンク経由でamazon購入するなど頂き、今後も応援頂ければ幸いです。

タイトルとURLをコピーしました