質問: お世話になります。 C#のWebBrowserControlを利用したログイン関連の支援ツールを作っています。 WEBページに存在するチェックボックスを入れたいのですが、あるサイトでは入れられなくて困っています。 ``` webBrowser1.Document.GetElementById("id").SetAttribute("checked", "checked"); ``` このような記述で今までいくつかのサイトに対応してきました ですが、今回はなぜかうまくいきません・・・ 教えてください。 対象サイトですが、ninjaブログのブログ開設画面です こちらの、「アダルトサイトではない」と「利用規約に同意します」のチェックボックスです。 ``` webBrowser1.Document.GetElementById("id").SetAttribute("checked", "1"); webBrowser1.Document.GetElementById("id").SetAttribute("checked", "true"); ``` のふたつも試してみましたがだめでした。 また、 ``` Console.WriteLine(webBrowser1.Document.GetElementById("id").GetAttribute("checked").ToString()); ``` とすると、チェックの有無にかかわらず True と表示されました。 ちなみにですが、FirefoxのF12開発者ツールからchecked="checked"と書き込んでみてもチェックが入りませんでした。(※別サイトのチェックボックスはF12開発者ツールから同様の作業を行うとチェックが入ります) よろしくお願いいたします。 --- 以下追記:: チェックボックス部のHTMLソースは以下です ``` 利用規約に同意します。 ``` 該当ページのHTMLソースをAnother HTML-lint gatewayを用いてチェックしたところ、特に重大なエラーは見つかりませんでした。 ユーザーがクリックする以外の方法でチェックボックスにチェック入れることを阻止する方法としてはどんなものがありますでしょうか。 そちらからのアプローチももしかしたら有効かもしれません。 よろしくお願いいたします。
回答: 解決しました。 getElementByIdからIDを指定していましたが、 ``` foreach(htmlElement a in (中略).getElementsByTagName('input')){ if(a.getAttribute("name") == "name"){ a.setAttribute("checked","checked"); } } ``` としたらうまくいきました。 なんでだろう。ID指定がうまくいっていなかったのかな・・・