36778

[code]

    <input class="test_class" data-nemo="submit" tabindex="0" value="ボタン" type="submit" disabled="">
    
[/code]

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

visualstudio express 2015 for desktop (windows10 64bit)


CC BY-SA 3.0
2017-07-28T12:22:23.913
36748
2017-07-30T00:33:20.003
12778
question
c# visual-studio
webbrowserの自動化処理でdisabledを処理するには？


`WebBrowser`コントロールは`Navigate`メソッドに`javascript:`スキームの値を指定するとか、`InvokeScript`メソッドを呼び出すなどの方法で任意のスクリプトを実行することができます。

実行するスクリプトは内容によるとしか言えませんが、`document.querySelector("セレクター").disabled =
false;`の要領でいいのではないでしょうか。


CC BY-SA 3.0
2017-07-28T12:45:03.423
36749
2017-07-28T12:45:03.423
5750
36748
answer


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

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

[`WebBrowser.Document`プロパティ](https://msdn.microsoft.com/ja-
jp/library/system.windows.forms.webbrowser.document\(v=vs.110\).aspx)では[`HtmlDocument`オブジェクト](https://msdn.microsoft.com/ja-
jp/library/system.windows.forms.htmldocument\(v=vs.110\).aspx)が得られますが、更に[`HtmlDocument.DomDocument`プロパティ](https://msdn.microsoft.com/ja-
jp/library/system.windows.forms.htmldocument.domdocument\(v=vs.100\).aspx)で[`IHTMLDocuemnt2`オブジェクト](https://msdn.microsoft.com/en-
us/library/aa752574.aspx)が得られます。ややこしいですが、このオブジェクトがJavaScript上での[`document`オブジェクト](https://developer.mozilla.org/ja/docs/Web/API/document)に対応しています。

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

[code]

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

と書けます。


CC BY-SA 3.0
2017-07-30T00:33:20.003
36778
2017-07-30T00:33:20.003
4236
36748
answer