[C#]WebBrowserで,指定されたalt属性を持つタグを自動クリックする

WebBrowserコントロールを使用して特定のページを表示した後に、特定の画像をクリックした事にするコードです。
サイトによっては、imgタグを使用して、画像をボタン代わりに使っているので、そのような場合に便利です。

private bool clickTagByAltStartsWith( string tagName, string keyString ) {
    HtmlElementCollection tagList;
    IHTMLElement targetTag = null;  // 検索対象のタグ(Microsoft HTML Object Libraryの参照設定が必要)
 
    tagList = browser.Document.GetElementsByTagName( tagName );
    foreach( HtmlElement tag in tagList ) {
        IHTMLElement tagDomEle = tag.DomElement as IHTMLElement;
        object altText = tagDomEle.getAttribute( "alt" );
        if ( tagDomEle == null || altText == null || !altText.ToString().StartsWith( keyString ) ) {
            continue;
        }
 
        // 見つけたタグをセットして、探索終了
        targetTag = tagDomEle;
        break;
    }
    if ( targetTag == null ) {
        // 条件に一致するタグが無かった...
        return false;
    }
 
    //--------------------------------
    // 見つけたタグをクリックする
    //--------------------------------
    targetTag.click();
    waitForResponse();
 
    return true;
}






呼び出し元は、以下のような感じになります。

private void button1_Click( object sender, EventArgs e ) {
    bool isSuccess = clickTagByAltStartsWith( "img", "検索" );
    if ( !isSuccess ) {
        MessageBox.Show( "対象の画像が存在しませんでした。" );
        return;
    }
 
    MessageBox.Show( "検索をクリックしました" );
}



上記の処理を使用するための注意事項として、プロジェクトの参照設定で「Microsoft HTML Object Library」を設定する必要があります。


また、メソッド中のgetAttribute()の引数で”alt”属性を決め打ちしていますが、これも引数にすればさらに汎用性が高まりますね。

関連記事

コメントを残す

メールアドレスが公開されることはありません。