webbrowserの自動化処理でdisabledを処理するには?

投稿者: Anonymous
<input class="test_class" data-nemo="submit" tabindex="0" value="ボタン" type="submit" disabled="">

このdisabledを除去、または無効化にしたいのですが、
どのように記述すればよいでしょうか?

visualstudio express 2015 for desktop (windows10 64bit)

解決

質問文では言及されていませんが、実現方法に依らず、操作対象となるタグをどのように特定するかという問題があります。id属性が適切に付与されていれば特定が簡単ですが、質問文の<input>タグには付与されていないように見受けられます。この点は本質問の範囲外ですので、とりあえずinput[type=submit]で特定可能と仮定して回答します。

WebBrowserコントロールが基盤としているブラウザーはInternet Explorerですが、読み込んだHTMLを基にDOMツリーを構築しています。各要素に対応するDOMオブジェクト(Document Object Model)はCOMオブジェクト(Component Object Model)として表現されています。更に、.NET FrameworkはCOMオブジェクトを操作する機能も持っているため、結果的にHTML要素の操作は簡単です。

WebBrowser.DocumentプロパティではHtmlDocumentオブジェクトが得られますが、更にHtmlDocument.DomDocumentプロパティIHTMLDocuemnt2オブジェクトが得られます。ややこしいですが、このオブジェクトがJavaScript上でのdocumentオブジェクトに対応しています。

documentオブジェクト得られれば、JavaScriptと同等の処理をC#言語で記述できます。最終的にwebBrowser1オブジェクトのHTMLを操作する場合は

dynamic document = webBrowser1.Document.DomDocument;
document.querySelector("input[type=submit]").disabled = false;

と書けます。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *