5

Web サイトに移動した後にリンクをクリックしたい

 webKitBrowser1.Navigate("http://www.somesite.com");

リンクの ID が であると仮定して、この Web サイトのリンクをクリックする方法はlnkId ?

<a href="http://www.google.com" id="lnkId"> Go to Google </a>

Visual Studio に付属する既定のブラウザー コントロールでは、次のコードを使用してそれを行うことができます。

 foreach (HtmlElement el in webBrowser1.Document.GetElementTagName("a")) {
 if (el.GetAttribute("id") == "lnkId") {
 el.InvokeMember("click");
 }
 }

WebkitDotNet コントロールを使用している場合、上記のコードに相当するものは何ですか?

4

3 に答える 3

1

私は Windows を扱っておらず、私の経験はすべて Webkit GTK に関するものです。以下のコメントはその経験に基づいています。

使用している Webkit .NET のバージョンがわかりません。複数の実装があるようです。Wasif が言及したものを使用していると仮定すると、例https://code.google.com/p/open-webkit-sharp/source/browse/JavaScriptExample/Form1.csに記載されているように JavaScript を評価できます。

実際、実装が JavaScript の実行をサポートしている場合、すべてではないにしても、ほとんどの DOM 操作を実行できます。API 関数は通常、JavaScript 関数と同じであり、ほとんどの場合、起源に関係なく、まったく同じ関数を内部的に呼び出します。アプリケーションと JavaScript の間の通信は少し難しいかもしれませんが、警告メッセージを読むことができれば、それも解決できます。このライブラリはアラート処理メカニズムをサポートしているようです。私がhttps://github.com/nhrdl/notesMDに書いたツールは、GTK バージョンを使用し、Python で書かれていますが、この通信を実現するいくつかの例を示します。

ちなみに、要素の ID がわかっている場合は、Document.GetElementById を使用するとループを回避できます。

于 2014-03-03T18:46:51.227 に答える