複数あるName属性の無いsubmitボタンを押すには?


あきやま  2005-08-04 14:09:44  No: 91259

質問させて頂きます。こちらVBのバージョンは.net2003です。
6.0の方法は結構あったんですが.netは見つかりませんでした・・・
webbrowser.Document.getElementsByTagName("INPUT").item(0).click()
とすると一つのsubmitは押し下せますがNAME属性の無いsubmitボタンが2つなどあるとどのボタンも押してないようになってしまいます。
ひとつ目のボタンを押すなどするためにはどうすればよいでしょうか?


魔界の仮面弁士  2005-08-04 18:59:25  No: 91260

> 6.0の方法は結構あったんですが.netは見つかりませんでした・・・
COMベースの操作になるという点では、なんら変わりありませんから、
VB6だろうと、JScriptだろうと、C#だろうと、VB.NETだろうと、
言語に関係なく、いずれも同じ方法で操作可能なはずですよ。

もっとも、.NET系言語の場合は、Marshal.ReleaseComObject() の呼び出しが
必要になってしまいますので、手順的には煩雑にならざるを得ませんけど。

> 一つのsubmitは押し下せますがNAME属性の無いsubmitボタンが2つなど
> あるとどのボタンも押してないようになってしまいます。
すみません、質問の内容が理解できませんでした。
「どのボタンも押してないよう」になるというのは、
具体的には、どのような状況を指しているのでしょうか? 

たとえば、下記のようなフォームがあったとして、
  <form ……>
    <p><input type="text" name="aaa"></p>
    <p><input type="submit" name="bbb"></p>
    <p><input type="submit"></p>
  </form>
ここで、3つ目の「nameの無いsubmitボタン」のclick()メソッドを
呼び出しても、「name=aaaのtextボックス」の内容が送信されないと
いう事でしょうか。それとも、データは送信されるけれど、望んでいる
結果が得られないという事なのでしょうか。


あきやま  2005-08-05 00:54:49  No: 91261

早速のレスありがとうございます。

<FORM method=post action....>
....
<INPUT TYPE="submit" VALUE="ウホヌァ">
.....
<FORM method=post action....>
....
<INPUT TYPE="submit" VALUE="・ッ・・「">
という感じの2つのフォームがあるときに最初または2つめのsubmitをclick()したいのですが、フォームの内容が送られません。(どちらのボタンが押されていません)。
という状況です。


Dental  2005-08-05 10:51:05  No: 91262

> <FORM method=post action....>
??? </FORM> が無いんですか?
<form>〜</form>の中に、さらに<form>〜</form>が入れ子になっているのか、
<form>〜</form>が2つ並んでいるのか、質問文からは判断が付きません。

でもまぁ、document.forms(n)で、特定のフォームを指定できるので、
あとは、その中にある送信ボタンを click() するだけですよね。

> フォームの内容が送られません。
1. clickの仕方がわからないので、送ることができないのでしょうか?
2. clickして、データも送信されたけれど、Webサーバーからは
   期待する結果が得られないのでしょうか?
3. clickしたけれど、HTTP通信自体が発生していないのでしょうか?

1.なら、ボタンコントロールのclickメソッドを呼び出すだけなので、
基本的には、最初にご自身が提示されたコードで方向性はあってます。
もちろん、他の呼び出し方もありますし、また、実際に「item(0)」で
良いのかどうかは別問題ですけれど。
(詳細なページ構成がわからないので、正しいコードはアドバイス不可能)

2.なら、HTML側に問題があるか、サーバー側に問題があるのか、コード側に
問題があるのかの切り分けが必要でしょうね。

3.だとしたら、間違った要素をclickしている可能性が大です。

> 最初または2つめのsubmitをclick()したいのですが
「または」? どちらが押されても気にしない、という事ですか?
どちらのformも、同じ機能を持っているということかな・・・。

>(どちらのボタンが押されていません)。
日本語の文法が少しおかしいかも……。typoでしょうけど。

「どちらのボタンも押されていません」なのか、
「どちらのボタンが押されているかわかりません」なのか、
「どちらかのボタンが押されていません」なのか、それとも・・・?


あきやま  2005-08-05 14:19:15  No: 91263

Dentalさん、失礼しました。

<form>〜</form>が2つ並んでいる状態になっています。

> フォームの内容が送られません。
2つ以上のsubmitがある時、click()の仕方が分からない状態です。

> 最初または2つめのsubmitをclick()したいのですが
または、の方です。

>(どちらのボタンが押されていません)。
ミスです・・・"どちらのボタンも押されていません"です。

>document.forms(n)
この記述は試したのですが
axwebbrowser1.document.forms(n)....ですと、
「インターフェース"mshtml.IHTML.ElementCollection"には規定のプロパティがないため、インデックス処理を実行できません。」
と怒られてしまいます。

Dim IE As Object = CreateObject("InternetExplorer.application")
....
IE.Document.forms(0).Submit()
等IEを別窓で開けば処理が可能なのですが・・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加