webbrowserでの自動入力について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/11/5 14:05:02
> こちらの右上にある検索のテキストボックスの挙動なのですが、
右上にある
  <input type="text" name="keyword">
のことですね。

> こちらは、InnerTextでセットすると
その場合、
  <input type="text" name="keyword">xxxxx</text>
を想定したコードになります。


> SetAttribute("value", "xxxxx") でセットすると

その場合、
  <input type="text" name="keyword" value="xxxxx">
として扱われます。

そして、 <form> からの submit 処理や JavaScript の .vvalue は、
後者でなければ意味が無いので、その結果は当然ですね。


> 他に同じような動きをするURLを探したのですがみつかりませんでした。

となると、元の URL でどのような動きが起きているのかを、
どうにか頑張ってご自身で調査していただくしか無いですかね。

こちらとしても、『「入力されていません」のような状態になる』というのが
どのような状態であるのか分かりませんので、状況を調べられるのは
るいさん自身しか居ないわけで…。
投稿者 るい  (社会人) 投稿日時 2016/11/4 15:36:44
魔界の仮面弁士様、

返答ありがとうございます。
そして返事が遅くなり申し訳ございません。

実際のところ、躓いているURLは、ラクマとうフリマサイトの出品画面になります。
ログインが必要な為サンプルURLとしてお伝えできませんでしたので他に同じような動きをするURLを探したのですがみつかりませんでした。

似たような動きとして、

http://rakuma.rakuten.co.jp/search/

こちらの右上にある検索のテキストボックスの挙動なのですが、こちらは、InnerTextでセットすると検索ボタンを押しても何も入力されていない結果が出て、SetAttribute("value", "xxxxx") でセットすると検索文字列として検索できます。

ただ今までもこのようなSetAttributeで解決することは何度かあったのですが、今回はダメでしたので、こちらはサンプルとしては違うかもしれません。

いただいたURLの情報をもとに、IEのバージョンでも試してみましたが特に変化はみうけられませんでした。
なにかお気づきのてんがございましたら、教えていただけると助かります。
よろしくお願いいたします。



投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/11/2 18:25:15
可能であれば、サンプルとなりそうな具体的な URL を挙げて頂けると話を進めやすいです。


> 内部的?には入力されていない状態のままで、

恐らくは、onchange などの変更通知イベントが発生していないのだと思います。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=all&namber=33445&type=0&space=0&no=0
投稿者 るい  (社会人) 投稿日時 2016/11/2 17:32:59
webbrowseを使い、ウェブ上のテキストボックスやコンボボックスを操作するプログラムを書いています。
テキストボックスであれば
 Dim Elementst As HtmlElementCollection = Me.WebBrowser1.Document.GetElementsByTagName("input")
        For Each Element As HtmlElement In Elementst
            If Element.GetAttribute("id") = "input_text" Then
               Element.SetAttribute("value", "aaaaaaaaaaaaaaaaaa")   
      ’もしくはElement.InnerText = "aaaaaaaaaaaaaaaaaa"
       Exit For 
            End If
        Next

コンボボックスであれば
Elementst = Me.WebBrowser1.Document.GetElementsByTagName("select")
     For Each Element As HtmlElement In Elementst
            If Element.GetAttribute("id") = "deliveryTerm" Then
           Element.SetAttribute("selectedIndex", "3")
       ’もしくはElement.SetAttribute("value", "3")
                Exit For
            End If
        Next
のような方法を使っています。


どのように表現したらいいかわからないのですが、
実行した際に、見た目上はしっかり反映、入力されているのですが、内部的?には入力されていない状態のままで、「入力されていません」のような状態になります。

例えばSendKeys.Sendを使ってキーボードから入力したようにすれば反映されます。

コードを使って入力や選択をして、なおかつページがそれを認識するようにするにはどのような方法がございますでしょうか?

解りずらい質問で大変申し訳ございませんが、よろしくお願いします。