interacting with awesominum webcontrol
本文关键字:webcontrol awesominum with interacting | 更新日期: 2023-09-27 17:58:10
你能在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
我该如何在敬畏中做到这一点?它是否有内置的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元素解析,所以我的备份计划如下:
- 在敬畏之心打开网页
- 将HTML抓取到字符串(当前使用:ExecuteJavascriptWithResult())
- 将字符串解析为HTML(当前使用:"HTML敏捷包")
- 做我需要做的事情(查找元素、集合等)
- 根据前面的步骤结果在awesomium中执行JS命令
如果awesomium支持DOM,所有这些都会更容易。。但是好
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的方法,我已经测试过了,它对我来说很有效。
关于"如何获取HTML"的问题,我似乎记得在遇到这个问题时使用了一种半技巧的方法:
var control = <some awesomium WebControl instance>;
control.SelectAll();
control.CopyHtml();
var html = Clipboard.GetText();