继续:
我想填写网站(即gmail)网页表单。 我想避免WebBrowser控件开销。我用JS。 但是以下代码不起作用(因为Navigation_completed处理程序被调用太多次)。如何验证以下代码是否有效?有没有更快的方法呢?
static void Main(string[] args)
{
runBrowserThread(new Uri("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=llya694le36z&ss=1&scc=1<mpl=default<mplcache=2&hl=iw&from=logout"));
}
private static void runBrowserThread(Uri url)
{
var th = new Thread(() =>
{
var br = new WebBrowser();
br.DocumentCompleted += browser_DocumentCompleted;
br.Navigate(url);
br.Navigate("javascript: void(document.getElementsByName('Email')[0].value = 'Name';document.getElementsByName('Passwd')[0].value = 'Pass'; document.getElementsByName('signIn')[0].click();)");
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
static void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var br = sender as WebBrowser;
if (br.Url == e.Url)
{
Console.WriteLine("Natigated to {0}", e.Url);
// Application.ExitThread(); // Stops the thread
}
}
TIA