WebBrowserコントロール内のテキストボックスに文字列をセットする

タグの編集
投稿者 クロネコ  (社会人) 投稿日時 2010/2/14 12:22:09
XPsp3:VB2005


私が書いてるブログ(Ameba)なのですが、ある程度自動化出来れば楽だなぁと思い、WebBrowserに表示させて、ブログのタイトルと本文を入れようとしたのですが、タイトルは入るのに本文が入りませんでした。

htmlを解析し、inputから要素を抜き出しセットすれば問題ないと思っていたのですが、どうも違うようです。

この2つのテキストボックスの違いは、rowsの設定の違いしか思いつきません。

実際はどう違うのでしょうか?
また、何故、本文の方のテキストボックスには文字列が入らないのでしょうか?


教えて頂けたなら、非常にありがたいです。

よろしくお願い致します。



htmlソース----------------------------------------------------

<dl id="entryTitle">
<dt><label for="title">タイトル</label></dt>
<dd><input type="text" name="entry_title" maxlength="48" size="40" value="" id="title" title="全角・半角48文字以内" /></dd>
</dl><!-- entryTitle -->



<div id="entryBody" class="entryWrap">
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
<input name="blog_text" type="hidden" value="" />
</div><!-- //entryBody -->
<div id="controlTA">

htmlソース----------------------------------------------------


○出来る

Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("entry_title")
forms(0).InnerText = "ブログタイトル" ' テキストボックスに「タイトル」を入力


×出来ない

Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("blog_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力






投稿者 太郎冠者  (社会人) 投稿日時 2010/2/14 15:20:53
単純に取得する要素が間違っている気がします。

type="hidden"は隠し要素となるので画面には表示されません。
<input name="blog_text" type="hidden" value="" />

ブログ本文を入力するならこっちのTextAreaを取得しなければならないと思います。
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
投稿者 クロネコ  (社会人) 投稿日時 2010/2/14 22:30:06
太郎冠者様、返信有り難うございます。

"entry_text"ですね?

これもさっき試してみましたがダメでした。

何か根本的に間違っているのでしょうか?


投稿者 クロネコ  (社会人) 投稿日時 2010/2/15 03:00:24
entry_textの要素を探すため、以下のコードも試してみました。

「0の値はインデックスに対して有効ではありません」とエラーが出てしまいます。

どなたか、アドバイスよろしくお願い致します。


Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = _
                        WebBrowser1.Document.GetElementsByTagName("entry_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
投稿者 太郎冠者  (社会人) 投稿日時 2010/2/15 04:13:49
Amebaのゴミアカがあったので試してみました。

まず、Amebaブログの本文入力欄は「タグの非表示」「HTMLタグを表示」の2種類あって
「HTMLタグを表示」の場合、下記のコードで文字を挿入できました。

Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim el As HtmlElement = all.Item("entryTextArea")
el.InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力 


しかし「タグの非表示」の場合上記のコードではダメでした。
HTMLソースを軽く眺めてみたんですが、どうやら「タグの非表示」の場合、画面に表示されている入力欄はHTMLのTEXTAREA要素ではなく、JavaScriptを使って作成されたもののようです。
なので「タグの非表示」の場合はTextAreaのInnerTextに文字がちゃんと入っていても、画面には表示されないようです。

これ以上の細かな話はHTMLはなんとなく読めるレベルの私には分からないので、他の識者の方にお願いしたいと思います。
投稿者 クロネコ  (社会人) 投稿日時 2010/2/15 21:30:49
太郎冠者さん、ご返答有り難うございます。

しかも、実際にAmebaでも試して頂き、感謝です。

「HTMLタグを表示」で文字挿入出来ただけでも、大変助かります。
御陰様で、ここでstopせずにすみます。
有り難うございます。


JavaScriptを使っているとすると難しそうですね。