3
我正在尋找.NET庫/組件,它可以讓我做以下操作:.NET瀏覽器仿真API
- 加載網頁
- 執行被鏈接JS
- 執行我自己的JS在頁面的範圍,返回執行結果,可能是複雜對象或對象數組。
到目前爲止,我發現的唯一解決方案是使用WebBrowser對象,但它需要大量的樣板代碼才能使所有工作都成功,並且無法使用對象數組。 在下面的代碼示例中,我收到dynamic val = o.a;
class Program
{
[STAThread]
static void Main(string[] args)
{
var t = new System.Threading.Thread(BrowserThread);
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
Console.ReadLine();
}
private static void BrowserThread()
{
var wb = new WebBrowser();
wb.Navigate("http://google.com");
wb.DocumentCompleted += (sender, args) =>
{
var head = wb.Document.GetElementsByTagName("head")[0];
var script = wb.Document.CreateElement("script");
dynamic el = script.DomElement;
el.text = "function test(){return [{a:2},{a:2},{a:2}]}";
head.AppendChild(script);
dynamic result = wb.Document.InvokeScript("test");
dynamic o = result.pop();
dynamic val = o.a;
};
Application.Run();
}
}
一個RuntimeBinderException任何人都可以提供一個替代解決方案,或幫助解決這個問題嗎?