質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

3回答

3556閲覧

C# WebBrowserControl チェックボックスにチェックを入れられない

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2015/12/20 07:22

編集2015/12/21 12:14

お世話になります。

C#のWebBrowserControlを利用したログイン関連の支援ツールを作っています。

WEBページに存在するチェックボックスを入れたいのですが、あるサイトでは入れられなくて困っています。

C#

1webBrowser1.Document.GetElementById("id").SetAttribute("checked", "checked");

このような記述で今までいくつかのサイトに対応してきました
ですが、今回はなぜかうまくいきません・・・
教えてください。

対象サイトですが、ninjaブログのブログ開設画面です
http://www.ninja.co.jp/home/blog/make

こちらの、「アダルトサイトではない」と「利用規約に同意します」のチェックボックスです。

C#

1webBrowser1.Document.GetElementById("id").SetAttribute("checked", "1"); 2webBrowser1.Document.GetElementById("id").SetAttribute("checked", "true");

のふたつも試してみましたがだめでした。
また、

C#

1Console.WriteLine(webBrowser1.Document.GetElementById("id").GetAttribute("checked").ToString());

とすると、チェックの有無にかかわらず
True
と表示されました。

ちなみにですが、FirefoxのF12開発者ツールからchecked="checked"と書き込んでみてもチェックが入りませんでした。(※別サイトのチェックボックスはF12開発者ツールから同様の作業を行うとチェックが入ります)

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


以下追記::

チェックボックス部のHTMLソースは以下です

html

1<input type="hidden" name="rule" value="" /><input type="checkbox" name="rule" id="rule" value="1" /><label for="rule">利用規約に同意します。</label>

該当ページのHTMLソースをAnother HTML-lint gatewayを用いてチェックしたところ、特に重大なエラーは見つかりませんでした。

ユーザーがクリックする以外の方法でチェックボックスにチェック入れることを阻止する方法としてはどんなものがありますでしょうか。
そちらからのアプローチももしかしたら有効かもしれません。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/12/20 10:10

リンク先は会員登録が必要です。転載にならない程度に再現可能なHTMLソースを提示できませんか。
ElecDove

2015/12/21 11:39

Tak1waさんいつもありがとうございます。 再現可能なソースを乗せられるかと思ったのですが、やはり難しそうです・・・ 一応、該当部のHTMLソースを追記させていただきます。
ElecDove

2015/12/21 12:38

自己解決しました。 お騒がせしました。
guest

回答3

0

わざわざユーザー登録してまで確認しようとは思いませんが、そもそも「利用規約に同意します」はコード側でチェックするようにするのはマズくないですか?
大きなお世話だと思いますが、なぜ「利用規約」が表示され、「利用規約に同意します」にチェックさせるのかも考えてみてください

そういうことも踏まえて当該のチェックボックスには何らかの対策がされているのかもしれません

投稿2015/12/20 19:06

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2015/12/21 11:37

わかりにくいいろいろなサイトの登録画面を統一化されたフォームでユーザー登録するためのツールのため、できるだけすべての要素をWinFormのパーツからコントロールしたく質問させていただきました。そのため作業を進めるのはユーザーです。 (マズいかマズくないか、なら微妙なところではありますが、問題だとは思いません) 私も何らかの対策だろうと考え、ここ連日JSとにらめっこしておりますが今のところ進展ゼロです。
guest

0

HTML

1<input type="checkbox" name="rule" id="rule" value="1" />

そりゃぁGetElementById("id")じゃ拾えるわけないやん
id="rule"やで

投稿2015/12/21 22:13

len_souko

総合スコア1348

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2015/12/22 01:14 編集

そこに関してはid名を編集した上でここにupしていますので、実ソース上ではruleで指定しております(そのまま載せるのはアレかなと思ったので)
guest

0

自己解決

解決しました。

getElementByIdからIDを指定していましたが、

C#

1foreach(htmlElement a in (中略).getElementsByTagName('input')){ 2 if(a.getAttribute("name") == "name"){ 3 a.setAttribute("checked","checked"); 4 } 5}

としたらうまくいきました。
なんでだろう。ID指定がうまくいっていなかったのかな・・・

投稿2015/12/21 12:40

ElecDove

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問