プロが教えるわが家の防犯対策術!

お世話になっております。

Web上で下記のようなHTMLで構成されている
ボタンが2個並んでいます。

<p class="blogButton2">
<a onclick="yblog.makeblog('khovroxakkth'); return false" href="javascript:void(0)">
<span>ブログ開設</span>
</a>
</p>


<p class="blogButton2">
<a onclick="yblog.makeblog('abchasittetemo5963'); return false" href="javascript:void(0)">
<span>ブログ開設</span>
</a>
</p>

上記で違うのは「khovroxakkth」と「abchasittetemo5963」の
部分だけです。

この部分は毎回変わります。
変わりますが前以てわかってはいます。

わかっていますので変数へ代入しておくことは可能です。
例えば変数、「rei1」、「rei2」に代入しておけます。

下のボタン、「rei2」を使ってクリックさせることは
可能でしょうか?

ご教授頂けたら助かります。
よろしくお願い致します。

A 回答 (5件)

完全一致で判定するのではなく、部分一致で判定する。

という方向でしょうかねぇ…。
# IndexOf()~の方。
部分一致なので場合によっては誤判定になる可能性は否定できませんけど。

>でも警告が気になる...

if文で判定して真だった場合に実行する内容がなにもない(「emptyステートメント」)けど、本当にそれでいいの?
っていう警告です。(判定する意味がなくなるから。その後にelseで続くなら別ですけども)
# https://msdn.microsoft.com/ja-jp/library/aa66473 …

で、その後のものはブロック文になって、「無条件で」実行されます。
# http://www.atmarkit.co.jp/fdotnet/csharp_abc/csh …
    • good
    • 0
この回答へのお礼

Wr5さま

ありがとうございます。

>本当にそれでいいの?

ちゃんと判定してクリックできてるので
まぁいいか...ってことにします^^;

感謝です。
今後ともよろしくお願いします^^

お礼日時:2016/02/02 21:10

he.GetAttribute("onclick").ToString()


string.Format("yblog.makeblog('{0}'); return false", rei2)
の両方が同じ値になるかどうか確認されては?
# 大文字/小文字やスペース/タブなども同一である必要がありますけど。

自分で回答しておいてアレですが、GetAttribute()にToString()は要らんかもしれない。
    • good
    • 0
この回答へのお礼

Wr5さま

ありがとうございます。
同じ値になってるようです。

試しにToString()を消してみましたが
これでもダメ...

No.2で私が書いた方法以外では
成功しませんね。

でも警告が気になる...

何でセミコロン入れるだけで成功するのか
ワケわからんですね^^;

お礼日時:2016/01/30 19:51

>he.Parent



親の属性見に行っているのですから該当するものがないんでしょう。
なので、
>セミコロン消したら警告は消えますがクリックできません
となるでしょうね。
あちらでは解決としてクローズしているようですが。
    • good
    • 0
この回答へのお礼

Wr5さま

ありがとうございます。

あちらで解決...と思いきや、エラー一覧を
表示してなくて後で気付きました^^;

he.Parent.GetAttribute⇒he.GetAttributeへ変更して
セミコロン消してみてもダメでした。

お礼日時:2016/01/29 22:42

スンマセン。

アホでした。
とっくに解決してました。
    • good
    • 0
この回答へのお礼

Wr5さま

ありがとうございます。
お教えいただいた方法だとなぜかクリックできないんです。

HtmlElementCollection hec = webBrowser.Document.GetElementsByTagName("a");
foreach (HtmlElement he in hec)
{
if (he.Parent.GetAttribute("onclick").ToString() == string.Format("yblog.makeblog('{0}'); return false", rei2)) ;
{
he.Focus();
pageStatus = PAGE_STATUS.PAGE_BLOG_OPEN;
he.InvokeMember("click");
}
}

↑こう書くとクリックできますがifのお尻にセミコロン付けてるんで
「CS0642 emptyステートメントが間違っている可能性があります」という
警告が出ます。

セミコロン消したら警告は消えますがクリックできません^^;
どうしたらいいものか...

お礼日時:2016/01/29 18:36

以前に回答した時の応用ではできないんですか?


http://oshiete.goo.ne.jp/qa/9131922.html

// Aタグのコレクションを取得
HtmlElementCollection hec = webBrowser1.Document.GetElementsByTagName("a");
foreach(HtmlElement he in hec)
{
 // onclick属性にrei2の内容の文字列があるか?(-1だと該当する文字列はない)
 if(he.GetAttribute("onclick").ToString().IndexOf(rei2) != -1)
 {
  he.Focus();
  he.InvokeMember("click");
 }
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!