与awesominum webcontrol交互

你能在awesomium webcontrol中找到HTML元素来进行进一步的处理吗?

例如,我可以使用以下方法在Watin中找到必要的元素(甚至元素集合):

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

找到后 – 您可以提取该元素的多个属性

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

我如何在awesomium中做到这一点? 它是否具有内置的DOM解析器来操作网站控件? (div,链接,表等..)

到目前为止,我只能找到javascript执行命令, 但这不是我正在寻找的 ..

另外,我想知道如何将网页的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(当前使用:“HTML Agility pack”)
  4. 做我需要做的事情(找到元素,集合等)
  5. 根据前面的步骤结果在awesomium中执行JS命令

如果awesomium有DOM支持,所有这一切都会更容易..但.. ..

关于“我怎样才能获得HTML”这个问题,我似乎记得在遇到这个问题时使用半hacky方式做到这一点:

 var control = ; control.SelectAll(); control.CopyHtml(); var html = Clipboard.GetText(); 

JS技巧怎么样?

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

干杯!

是的,我们可以找到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的方式,我测试了它,它适用于我。