none
WebBrowserでフレームの中のメニューを選ぶ方法 RRS feed

  • 質問

  • VB2005の初心者です。

    Webbrowserを使ってプログムをしておりますが、フレームが2個あり、その中の1つのフレームにあるメニューを選択したいと思っております。いろいろ苦心していますが、初心者でまだ解りません。助けていただけたらありがたいのですが。

    フレームは以下の2つです

    <frame src="******" name="menu" ******>
    <frame src="******" name="frame_main"******>

    このname="menu" のフレームにある

    <td><img src="****" alt="???" name="アイウエオ" **** id="アイウエオ"
         onclick=****"

    の"アイウエオ"をClickした状態にしたいのですが,うまく選択できません

    よろしくお願いします

    2007年2月11日 2:59

すべての返信

  • フレームの中のHtmlDocumentで検索する必要があると思います。

    試してはいませんが,次のようなコードになると思います。

    Dim Element As HtmlElement = Me.WebBrowser1.Document.Window.Frames(0).Document.GetElementById("アイウエオ")

    Element.InvokeMember("click")

    2007年2月11日 18:32
  • 早速回答をいただきありがとうございました。

    まだまだ未熟ですので、今後ともよろしくお願いします。

    2007年2月11日 22:09
  • お教えいただいたようにやってみました。

            Dim Element As HtmlElement = Me.WebBrowser1.Document.Window.Frames(0).Document.GetElementById("menu_refer")
     
            '---------------------------------------------------
            If Element Is Nothing Then
                MsgBox("ありません")
            Else
                Element.InvokeMember("click")
            End If

    たしかに("menu_refer")は存在するので、MsgBox("ありません")に行かずにElement.InvokeMember("click")
    に行きましたが、clickされた状態にならずに変化がありません。

     どこか間違えているのでしょうか。

     

    2007年2月12日 6:03
  • そのIDをもつエレメントがほかにもあったりするのでは?(本当はそんなことがあっては困る)

    エレメントのouterHtmlなどを表示して確認してみたらどうでしょうか。

    2007年2月12日 6:18
  • YAS.s様何度もすぐに回答いただきましてありがとうございます。

    outerHtmlはまだやっていませんが、見る限りではIDの重複は無いように思えます。(後でやってみます)

    ただちょっと気になるのは最初の画面から、ここのフレームの画面に完全に変わるのに少し時間がかかることです。

    Element.InvokeMember("Click")の所にブレークポイントを置くと全部が表示される前にここに来てしまうような気がします。

    Private Sub WebBrowser1_DocumentCompletedは使っていますが、これとは関係が無いのでしょうか?

    2007年2月12日 8:38
  • YAS.s様  問題解決です。

    馬鹿でした、DocumentCompletedからネストを何回もして、Element.InvokeMember("Click")を知らぬ間に何度もやっていました。それで何も起こってないように見えただけでした。

    間違っていたのは私の頭の方でした。

    初心者相手にほんとうにご親切にしていただきありがとうございました。感謝です。

    これに懲りずにまたよろしくお願いします

    2007年2月12日 9:09