またフレーム内の処理についてなのですがよろしくお願いいたします。
普通にフレームのないページであれば、
Set objDoc = objForm.WBMain.Document
objDoc.Forms(0).submit
でクリックできたのですが、フレーム内のボタンをクリックする方法が
わからず試行錯誤してたのですがうまくいかないので
お教えください。お願いします。
> objDoc.Forms(0).submit
objDoc.Frames(0).Forms(0).submit
という感じになるのでは?
[MAKOTOさん]
> objDoc.Forms(0).submit
これは「ボタンのクリック」ではなく、「フォームデータの送信」です。
「objButton.click」と「objForm.submit」の違いに付いては、
下記の過去ログの最後の方で、少し解説しています。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090009.txt
[kldsさん]
>> objDoc.Forms(0).submit
> objDoc.Frames(0).Forms(0).submit
submitメソッドで行うなら、
objDoc.frames(0).document.forms(0).submit
あたりで。
kldsさん、魔界の仮面弁士さんありがとうございます。
説明不足の部分がありました。
上下にわかれたフレームの下部分に
<input type="submit" name="test1" value="テスト1">
<input type="submit" name="test2" value="テスト2">
<input type="submit" name="test3" value="テスト3">
のようにNameかValueを指定してボタンを押したいのですが
その方法もお教えください。
お手数ですがよろしくお願いいたします。
もうひとつ知りたいのですが、
そのボタンがあるかどうかというのも
わかるりませんか?
例えば上に書いた例で言えば、
テスト1のボタンがあればテスト1のボタンを押す、
なければボタンを押す処理を飛ばすという風な感じのもの
があれば知りたいのですがお願いします。
> のようにNameかValueを指定してボタンを押したいのですが
その場合はやはり、「formエレメントのsubmitメソッド」ではなく、
「inputエレメントのclickメソッド」で対応する必要があるでしょう。
手順に付いては、先に紹介したURLの方で述べていますので、そちらを参照してください。
> テスト1のボタンがあればテスト1のボタンを押す、
その場合、あるHTML要素が『テスト1のボタン』と見なされる条件は何ですか?
id="test1"という属性を持った要素を探すなら、documentオブジェクトの
getElementByIdメソッドが使えます。これがNothingを返せば、その要素は
存在しないという事になります。つまり、
Set objButton = objDocument.getElementById("test1")
If objButton Is Nothing Then
MsgBox "ボタンが見つかりません。"
Else
objButton.click
End If
のようなイメージになります。
あるいは、name="test1という属性をもったコントロールを探すなら、
formエレメントのelementsコレクション、もしくは
documentオブジェクトのgetElementsByNameメソッドが使えます。
前者(elements)の場合は、先のgetElementByIdと同じようなイメージです。
つまり、それがNothingを返せば、その要素は存在しないという事に
なりますので、コーディングとしては、
Set objControl = objForm.elements("test1")
If objControl Is Nothing Then
MsgBox "ボタンが見つかりません。"
Else
objControl.click
End If
のようなイメージとなるでしょう。
また、後者(getElementsByName)の場合は、このメソッドが返す
コレクションのlengthプロパティを調べればOKです。
例えば、
Set objElementCollection = objDocument.getElementsByName("test1")
If objElementCollection.length = 0 Then
MsgBox "ボタンが見つかりません。"
Else
objElementCollection(0).click
End If
ですね。
魔界の仮面弁士さんから教えていただいたのを
少し変えて、
Set objDoc = WebBrowser1.Document
Set objTag = objDoc.Frames.Item(1).Document
Set objText = objTag.getElementsByName(pstrName)
If objText.Length = 0 Then
MsgBox "ボタンが見つかりません。"
Else
objText(0).Click
End If
としたらフレーム内のボタンを押せるようになりました。
みなさまありがとうございました。
今後ともよろしくお願いいたします。
ツイート | ![]() |