none
Webbrowser "textarea"Tag のテキストボックスに入力するには? RRS feed

  • 質問

  • お世話になっております。

    Google AdWordsのテキストボックスに文字列を入れたいと思います。

    その時のHTMLは、こちら↓。

    <div>
    <div class="sIKB">
    <div class="sJKB sMFB" aria-hidden="false">1 行に 1 つ</div>
    <textarea class="sLFB sKKB" style="overflow-y: hidden; height: 36px;"></textarea>
    </div>
    
    </div>

    これに、データを入力する為、次のコードを書いた。

                For Each htm As HtmlElement In WebBrowser1.Document.GetElementsByTagName("textarea")
                    If htm.GetAttribute("class") = "sLFB sKKB" Then
                        htm.SetAttribute("value", "hoge")
                        Exit For
                    End If
                Next
    

    しかし、"sLFB sKKB"を検知出来ずにスローされてしまった。

    また、検索ボタンを押下しようとしたが、こちらも検知出来なかった。

    <button class="gwt-Button aw-native-save-button-element aw-larger-button" type="button">検索</button>


                Dim elem As HtmlElement
                For Each elem In WebBrowser1.Document.GetElementsByTagName("button")
                    '要素=input の value 属性の値を調べる
                    If elem.GetAttribute("value") = "検索" Then
                        elem.InvokeMember("Click")    '
                    End If
                Next
    

    どこがいけなかったのでしょうか。

    ご教示下さい。

    よろしくお願いします。

    2013年5月25日 3:16

回答

  • class属性は、html DOM上ではclassNameという名前を使用しなければなりません。

    またbutton要素の方はなんとも。取り敢えず、全button要素のvalue属性をDebug.Printとかしてみれば何か分かるかもしれません。

    • 回答としてマーク taokato 2013年5月25日 12:58
    2013年5月25日 5:38

すべての返信

  • Google AdWordsのアカウントはないので件のページを見ることはできませんでした。ですので想像でしかコメントできませんが、

    質問文に挙げられているHTMLはどのように入手したものでしょうか?
    最近のajaxを多用したサイトでは、JavaScriptでHTMLを動的に書きかえるため、ブラウザーがページを取得した際のソースとは異なっている可能性があります。
    textareaを操作しようとしているタイミングでのHTMLを入手し、そこで必要なclassなどを指定する必要があります。

    2013年5月25日 4:32
  • >質問文に挙げられているHTMLはどのように入手したものでしょうか?

    firefoxのアドオンで、firebugを利用すると、表示されたテキストボックスなどのHTMLを表示出来ます。

    >textareaを操作しようとしているタイミングでのHTMLを入手し、そこで必要なclassなどを指定する必要があります。

    そのようにした筈なんですが・・・

    2013年5月25日 4:45
  • class属性は、html DOM上ではclassNameという名前を使用しなければなりません。

    またbutton要素の方はなんとも。取り敢えず、全button要素のvalue属性をDebug.Printとかしてみれば何か分かるかもしれません。

    • 回答としてマーク taokato 2013年5月25日 12:58
    2013年5月25日 5:38