1

さらに処理を行うために、awesomium webcontrolでHTML要素を見つけることができますか?

たとえば、次を使用して、Watinで必要な要素(または要素コレクション)を見つけることができます。

Link playButton = myie.ElementOfType<Link>(Find.ById("myid")); // find link (<a>)
Div test = myie.Div(Find.ById("audio")); // find div (<div>)

見つかった場合-その要素の複数のプロパティを抽出できます

string classname = playButton.ClassName; // alternatively -> inner text, link, id, class and all bucket of other properties

どうすればawesomiumでそれを行うことができますか?Webサイトコントロールを操作するためのDOMパーサーが組み込まれていますか?(div、リンク、テーブルなど。)

これまでのところ、javascript実行コマンドしか見つかりませんでしたが、それは私が探しているものではありません

さらに、WebページのHTMLを文字列(awesomium)に保存する方法を知りたいですか?

string mysite = webControl1.SiteHTML.ToString(); // something like this
// instead of
string mysite = webControl1.ExecuteJavascriptWithResult("document.documentElement.outerHTML").ToString();

編集:説明

awesomiumはHTML要素の解析をネイティブにサポートしていないようです。そのため、私のバックアップ計画は次のとおりです。

  1. awesomiumでウェブページを開く
  2. HTMLを文字列に取得します(現在使用しているもの:ExecuteJavascriptWithResult())
  3. 文字列をHTMLに解析します(現在使用しているもの:「HTMLAgilitypack」)
  4. 私がする必要があることをする(要素、コレクションなどを見つける)
  5. 前のステップの結果に基づいて、awesomiumでJSコマンドを実行します

awesomiumにDOMサポートがあれば、これらすべてが簡単になります。

4

3 に答える 3

6

そして、JSトリックはどうですか?

public string GetHTML(WebControl control)
{
          return control.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].outerHTML");

}

乾杯!

于 2014-04-28T16:37:32.310 に答える
1

はい、さらに処理するhtml要素を見つけることができます。例えば;

    dynamic document = (JSObject)webControl.ExecuteJavascriptWithResult("document");

using (document)
                {
                    try
                {
                    dynamic email = document.getElementById("email");
                    dynamic password = document.getElementById("password");

                    if (email == null && password == null)
                        return;

                    using (email)
                    {
                        email.value = "abc@msn.com";
                    }

                    using (password)
                    {
                        password.value = "password";
                    }
                }
                catch (Exception)
                {

                }

            }

それは私がhtmlInputElementを見つけた方法であり、私はそれをテストしました、そしてそれは私のために働きます。

于 2013-07-17T09:53:29.793 に答える
0

「HTMLを取得するにはどうすればよいですか」という質問に関して、この問題に遭遇したときに、これを行うためのセミハッキーな方法を使用したことを思い出しているようです。

var control = <some awesomium WebControl instance>;
control.SelectAll();
control.CopyHtml();
var html = Clipboard.GetText();
于 2013-02-07T21:43:40.647 に答える