//工作流程 private void SignAll() { //IEBrowser IEBrowser ie = new IEBrowser(wb); //JQUERY统计链接数 ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jBs"); int fav_count = ie.ExecuteJQuery <int>(JQuery.Create("__jBs").Length()); //将我喜欢的吧放到List List <string> fav_bar = new List <string>(); for (int index = 0; index < fav_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jBs").Eq(index.ToString()), "__jB"); string fav_text = ie.ExecuteJQuery <string>(JQuery.Create("__jB").Text()); if (fav_text != "发言记录" && fav_text != "贴吧" && fav_text != "百度") { string fav_url = "http://wapp.baidu.com/m?kw=" + UrlEncode(fav_text); fav_bar.Add(fav_url); } } //历遍每个吧,查找签到的链接URL,打开。 int num = 0; foreach (string bar_url in fav_bar) { num++; tips.Text = "签到进度:" + num + "/" + fav_bar.Count; ie.Navigate(bar_url); ie.IEFlow.Wait(new UrlCondition("wait", bar_url, StringCompareMode.StartWith), 10); ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jCs"); int sign_count = ie.ExecuteJQuery <int>(JQuery.Create("__jCs").Length()); for (int index = 0; index < sign_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jCs").Eq(index.ToString()), "__jC"); string sign_text = ie.ExecuteJQuery <string>(JQuery.Create("__jC").Text()); string sign_url = "http://wapp.baidu.com" + ie.ExecuteJQuery <string>(JQuery.Create("__jC").Attr("'href'")); if (sign_text == "签到") { ie.Navigate(sign_url); ie.IEFlow.Wait(new UrlCondition("wait", sign_url, StringCompareMode.StartWith)); } } } if (num != 0) { Environment.Exit(0); } }
private void cmdSub_Click ( object sender, EventArgs e ) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm" ) ); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait ( new UrlCondition ( "wait", "ButtonClick.htm", StringCompareMode.EndWith ) ); // 根据按钮显示的文本模拟按钮点击. // 方法1: 安装搜索按钮的 javascript 函数 clickButton 来获取按钮并调用其 click 方法. // 安装 clickButton 函数. ie.InstallScript ( "function clickButton(text){for(var i=0;i<document.all.length;i++){if(document.all[i].value==text){document.all[i].click();break;}}}" ); // 调用 clickButton 函数, 模拟点击文本为 Sub 的按钮. ie.InvokeScript ( "clickButton", new object[] { "Sub" } ); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace ( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript ( Properties.Resources.jquery_1_5_2_min ); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery ( JQuery.Create ( "'[value=Sub]:button'" ).Click ( ) ); }
private void cmdSub_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 根据按钮显示的文本模拟按钮点击. // 方法1: 安装搜索按钮的 javascript 函数 clickButton 来获取按钮并调用其 click 方法. // 安装 clickButton 函数. ie.InstallScript("function clickButton(text){for(var i=0;i<document.all.length;i++){if(document.all[i].value==text){document.all[i].click();break;}}}"); // 调用 clickButton 函数, 模拟点击文本为 Sub 的按钮. ie.InvokeScript("clickButton", new object[] { "Sub" }); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'[value=Sub]:button'").Click( )); }
private void cmdNavigate_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 将 WebBrowser 导航到 http://www.google.com.hk/. ie.Navigate("http://www.google.com.hk/"); }
private void cmdNavigate_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 将 WebBrowser 导航到 http://www.google.com.hk/. ie.Navigate ( "http://www.google.com.hk/" ); }
private void Form_Main_Load(object sender, EventArgs e) { IEBrowser ie = new IEBrowser(webBrowser_Main); ie.Navigate("https://login.taobao.com/member/login.jhtml?f=top&redirectURL=http%3A%2F%2Ftry.taobao.com%2F"); ie = new IEBrowser(webBrowser_Main); ie.IsNewWindowEnabled = false; }
private void cmd163Blog_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 此处修改为您的 163 博客地址. ie.Navigate("http://<163 博客地址>"); ie.IEFlow.Wait(3); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 弹出登录框. ie.ExecuteJQuery(JQuery.Create("'a:contains(登录)'").Attr("'id'", "'denglu'")); ie.ExecuteScript("document.getElementById('denglu').click();"); // 填写用户信息并登录. ie.ExecuteJQuery(JQuery.Create("'.ztxt:text'").Val("'<用户名>'")); ie.ExecuteJQuery(JQuery.Create("'.ztxt:password'").Val("'<密码>'")); ie.ExecuteJQuery(JQuery.Create("'.wbtnok:button'").Attr("'id'", "'dl'")); ie.ExecuteScript("document.getElementById('dl').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 跳转到日志页面. ie.ExecuteJQuery(JQuery.Create("'a:contains(日志)' ").Attr("'id'", "'rz'")); ie.ExecuteScript("document.getElementById('rz').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 跳转到编辑日志页面. ie.ExecuteJQuery(JQuery.Create("'a:contains(写日志)' ").Attr("'id'", "'xrz'")); ie.ExecuteScript("document.getElementById('xrz').click();"); ie.IEFlow.Wait(5); // 安装 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 填写日志内容. ie.ExecuteJQuery(JQuery.Create("'.ztag:text'").Val("'<标题>'")); ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'")); ie.ExecuteJQuery(JQuery.Create("'textarea.ztag'").Val(string.Format("'{0}'", IEBrowser.EscapeCharacter("<日志 html 代码>")))); ie.ExecuteJQuery(JQuery.Create("'#ne-auto-id-source'").Trigger("'click'")); ie.ExecuteScript("document.getElementById('key-093402170-autotag').click();"); ie.IEFlow.Wait(5); // 发布日志. ie.ExecuteJQuery(JQuery.Create("'.fc09:button'").Attr("'id'", "'fb'")); ie.ExecuteScript("document.getElementById('fb').click();"); }
private void cmdWait_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 导航到页面 http://www.google.com.hk/. ie.Navigate ( "http://www.google.com.hk/" ); // 等待页面载入完毕. ie.IEFlow.Wait ( new UrlCondition ( "wait", "http://www.google.com.hk", StringCompareMode.StartWith ) ); MessageBox.Show ( "页面已经载入" ); }
private void cmdWait_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://www.google.com.hk/. ie.Navigate("http://www.google.com.hk/"); // 等待页面载入完毕. ie.IEFlow.Wait(new UrlCondition("wait", "http://www.google.com.hk", StringCompareMode.StartWith)); MessageBox.Show("页面已经载入"); }
private void btn_OpenLink_Click(object sender, System.EventArgs e) { IEBrowser ie = new IEBrowser(this.webBrowser_Main); string strURL = textBox_Url.Text.Trim().ToString(); if (strURL != "") { ie.Navigate(strURL); } else { MessageBox.Show("没有要打开的链接"); } }
private void cmdCopyImage_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://www.google.com.hk/imghp. ie.Navigate("http://www.google.com.hk/imghp"); // 等待 5 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(5); // 获取 id 为 hplogo 的 img 的图片. this.pictureBox.Image = ie.CopyImage("'hplogo'"); }
private void cmdNoConflict_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://nt.discuz.net/, 此页面中已经定义了 $, 将和 jquery 的 $ 冲突. ie.Navigate("http://nt.discuz.net/"); // 等待 5 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(5); // 安装资源中的 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 执行 jquery 脚本 jQuery('*').length, 获得页面上总元素个数. Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'", false).Length( ))); }
//判断网页是否打开 private void OpenIndexPage() { //IEBrowser IEBrowser ie = new IEBrowser(wb); try { ie.Navigate(baidu_wapp_favbar); ie.IEFlow.Wait(new UrlCondition("wait", baidu_wapp_favbar, StringCompareMode.StartWith), 10); GetInnerHtmlDelegate gih = new GetInnerHtmlDelegate(GetInnerHtml); string innerhtml = this.Invoke(gih).ToString(); Work(); } catch (NullReferenceException) { OpenIndexPage(); } catch (TimeoutException) { MessageBox.Show("网页打开超时,请检查网络环境,并重试。"); } }
private void cmdExecuteJQuery_Click(object sender, EventArgs e) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser(this.webBrowser); // 导航到页面 http://www.google.com.hk/. ie.Navigate("http://www.google.com.hk/"); // 等待页面载入完毕. ie.IEFlow.Wait(new UrlCondition("wait", "http://www.google.com.hk", StringCompareMode.StartWith)); // 安装本地的 jquery 脚本. ie.InstallJQuery(JQuery.CodeMin); // 执行 jquery 脚本 $('*').length, 获得页面上总元素个数. Console.WriteLine("页面上共有 {0} 个元素", ie.ExecuteJQuery(JQuery.Create("'*'").Length( ))); // 执行 jquery 脚本 $('a'), 获得页面上所有的 a 元素并将结果保存在 __jAs 变量中. ie.ExecuteJQuery(JQuery.Create("'a'"), "__jAs"); // 得到 __jAs 变量中包含的 a 元素的个数. int count = ie.ExecuteJQuery <int> (JQuery.Create("__jAs").Length( )); for (int index = 0; index < count; index++) { // 得到 __jAs 变量中索引为 index 的 a 元素, 并保存在 __jA 变量中. ie.ExecuteJQuery(JQuery.Create("__jAs").Eq(index.ToString( )), "__jA"); // 输出 a 元素的 innerText 和 href 属性. Console.WriteLine(string.Format( "a[{0}], '{1}', '{2}'", index, ie.ExecuteJQuery <string> (JQuery.Create("__jA").Text( )), ie.ExecuteJQuery <string> (JQuery.Create("__jA").Attr("'href'")) ) ); } }
private void cmdAdd_Click ( object sender, EventArgs e ) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate ( Path.Combine ( AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm" ) ); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait ( new UrlCondition ( "wait", "ButtonClick.htm", StringCompareMode.EndWith ) ); // 模拟具有惟一 id 属性的按钮点击. // 方法1: 执行 javascript 脚本来获取按钮并调用其 click 方法. ie.ExecuteScript ( "document.getElementById('cmdAdd').click();" ); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace ( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript ( Properties.Resources.jquery_1_5_2_min ); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery ( JQuery.Create ( "'#cmdAdd'" ).Click ( ) ); }
private void cmdAdd_Click(object sender, EventArgs e) { // 创建 IEBrowser 对象, 用来控制窗口的 WebBrowser 控件. IEBrowser ie = new IEBrowser(this.webBrowser); // 载入已经放在运行目录的页面 ButtonClick.htm. ie.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "ButtonClick.htm")); // 等待 ButtonClick.htm 完全载入. ie.IEFlow.Wait(new UrlCondition("wait", "ButtonClick.htm", StringCompareMode.EndWith)); // 模拟具有惟一 id 属性的按钮点击. // 方法1: 执行 javascript 脚本来获取按钮并调用其 click 方法. ie.ExecuteScript("document.getElementById('cmdAdd').click();"); // 方法2: 安装跟踪和 jQuery 脚本后, 执行 jQuery 来模拟点击按钮. // 安装跟踪脚本. ie.InstallTrace( ); // 安装在资源中的 jQuery 脚本. ie.InstallScript(Properties.Resources.jquery_1_5_2_min); // 执行获取按钮并模拟点击的 jQuery 脚本. ie.ExecuteJQuery(JQuery.Create("'#cmdAdd'").Click( )); }
public static void Discuz(IEBrowser ie, string userName, string password, string url, string title, string content) { // 导航到页面 dz 论坛的页面. ie.Navigate(url); // 等待 10 秒钟, 以便页面载入完毕. ie.IEFlow.Wait(10); // 安装资源中的 jquery 脚本. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 安装 javascript 函数 clickLink, 根据超链接的文本点击超链接. ie.InstallScript( "function clickLink(text) {" + " links = document.getElementsByTagName('a');"+ " for(var index = 0; index < links.length; index++)"+ " {"+ " if(links[index].innerText == text)"+ " {"+ " links[index].click();"+ " break;"+ " }"+ " }"+ "}" ); // 是否存在已经登录后显示的短消息. if (ie.ExecuteJQuery <int> (JQuery.Create("'#pm_ntc'", false).Length( )) == 1) { // 调用 javascript 函数 clickLink, 模拟点击退出链接. ie.InvokeScript("clickLink", new object[] { "退出" }); // 等待 3 秒钟, 以便退出完毕. ie.IEFlow.Wait(3); // 重新调用自身. Discuz(ie, userName, password, url, title, content); return; } // 设置用户名. ie.ExecuteJQuery(JQuery.Create("'#ls_username'", false).Val("'" + userName + "'")); // 设置密码. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Val("'" + password + "'")); // 密码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#ls_password'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(5); // 获取验证码并显示给用户输入. FormVCode vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.ShowDialog( ) == DialogResult.OK) { // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Focus( )); // 填写验证码并多加 1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext_header1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(2); // 登录框提交. ie.ExecuteJQuery(JQuery.Create("'#lsform'", false).Submit()); // 等待 5 秒, 以便登录完成. ie.IEFlow.Wait(5); // 是否是验证码错误. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(验证码错误)'", false).Length( )) == 1) { // 验证码错误重新登录. Discuz(ie, userName, password, url, title, content); return; } TOPIC: // 随机导航至某一话题. ie.Navigate("http://nt.discuz.net/showtopic-" + new Random( ).Next(11000, 18000).ToString() + ".html"); // 等待 5 秒, 以便页面完成. ie.IEFlow.Wait(5); // 安装 jquery 脚本的一系列操作. ie.InstallJQuery(Properties.Resources.jquery_1_5_2_min); ie.ExecuteJQuery(JQuery.Create(false, true).NoConflict( )); // 话题不存在则重新选择. if (ie.ExecuteJQuery <int> (JQuery.Create("'p:contains(该主题不存在)'", false).Length( )) == 1) { goto TOPIC; } // 切换源码编辑方式. ie.InvokeScript("clickLink", new object[] { "Code" }); // 填写内容. ie.ExecuteJQuery(JQuery.Create("'#quickpostmessage'", false).Val("'" + content + "'")); // 验证码框获得焦点. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Focus( )); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait(3); // 获取验证码并显示给用户输入. vCodeWindow = new FormVCode( ); vCodeWindow.Image = ie.CopyImage("'vcodeimg1'"); // 用户是否确认. if (vCodeWindow.DialogResult == DialogResult.OK) { // 填写验证码并多加1. ie.ExecuteJQuery(JQuery.Create("'#vcodetext1'", false).Val("'" + vCodeWindow.VCode + "1'")); // 模拟一个退格键, 删除掉 1. SendKeys.Send("{Backspace}"); // 等待 2 秒. ie.IEFlow.Wait(3); // 提交. ie.ExecuteJQuery(JQuery.Create("'#quickpostsubmit'", false).Click( )); } else { Discuz(ie, userName, password, url, title, content); return; } } else { Discuz(ie, userName, password, url, title, content); return; } }
private void willWebSend() { IEBrowser ie = new IEBrowser(this.webBrowser1); // ie.InstallTrace(); ie.Navigate("http://219.142.64.12/Admin/oamis/inforReport.apsx"); webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(mywebBrowser_DocumentCompleted); ie.IEFlow.Wait(new UrlCondition("wait", "http://219.142.64.12/Admin/oamis/inforReport.apsx", zoyobar.shared.panzer.StringCompareMode.StartWith)); }
//工作流程 private void SignAll() { //IEBrowser IEBrowser ie = new IEBrowser(wb); //JQUERY统计链接数 ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jBs"); int fav_count = ie.ExecuteJQuery<int>(JQuery.Create("__jBs").Length()); //将我喜欢的吧放到List List<string> fav_bar = new List<string>(); for (int index = 0; index < fav_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jBs").Eq(index.ToString()), "__jB"); string fav_text = ie.ExecuteJQuery<string>(JQuery.Create("__jB").Text()); if (fav_text != "发言记录" && fav_text != "贴吧" && fav_text != "百度") { string fav_url = "http://wapp.baidu.com/m?kw=" + UrlEncode(fav_text); fav_bar.Add(fav_url); } } //历遍每个吧,查找签到的链接URL,打开。 int num = 0; foreach (string bar_url in fav_bar) { num++; tips.Text = "签到进度:" + num + "/" + fav_bar.Count; ie.Navigate(bar_url); ie.IEFlow.Wait(new UrlCondition("wait", bar_url, StringCompareMode.StartWith), 10); ie.InstallJQuery(JQuery.CodeMin); ie.ExecuteJQuery(JQuery.Create("'a'"), "__jCs"); int sign_count = ie.ExecuteJQuery<int>(JQuery.Create("__jCs").Length()); for (int index = 0; index < sign_count; index++) { ie.ExecuteJQuery(JQuery.Create("__jCs").Eq(index.ToString()), "__jC"); string sign_text = ie.ExecuteJQuery<string>(JQuery.Create("__jC").Text()); string sign_url = "http://wapp.baidu.com" + ie.ExecuteJQuery<string>(JQuery.Create("__jC").Attr("'href'")); if (sign_text == "签到") { ie.Navigate(sign_url); ie.IEFlow.Wait(new UrlCondition("wait", sign_url, StringCompareMode.StartWith)); } } } if (num != 0) { Environment.Exit(0); } }
//http://www.sufeinet.com/forum.php?mod=viewthread&tid=6976&extra=page%3D1&page=1& private void btnlogin_Click(object sender, EventArgs e) { string loginUrl = "http://219.142.64.12/login.aspx"; IEBrowser ie = new IEBrowser(webBrowser1); ie.Navigate(loginUrl); ie.IEFlow.Wait(new UrlCondition("wait", loginUrl, zoyobar.shared.panzer.StringCompareMode.StartWith)); MainCookie Cc = new MainCookie(); string str = MainCookie.GetCookies(loginUrl); //获取得到的cookie string[] strs = str.Split(';'); //将cookie字符串处理成Cookie对象 for (int i = 0; i < strs.Length; i++) { try { Cookie ck = new Cookie(); ck.Name = strs[i].Split('=')[0].Trim(); ck.Value = strs[i].Split('=')[1].Trim(); ck.Domain = webBrowser1.Document.Domain; mf.cc.Add(ck); //这里的cc 是CookieContainer,这里我定义到了主窗体中。 如果处理成CookieCollection 也可,方法是一样的.这样自己构造一个cookie集合,. } catch { } } //由于构造静态变量,变量被申明以后是存在共享空间中,直到整个程序结束才被释放,所以拿来传递窗体间的值再合适不过.也不用写繁琐的委托.当然如果你明白该怎样处理委托,那么可以任选一种方法.. MainCookie.Cc = mf.cc; MainCookie.Cookie = str; //既然已经得到了cookie,那么就做你想做的事情去吧... // this.Dispose(); // MessageBox.Show(str.ToString());//这个截取后4位可以得到验证码。不用自己手动识别了,呵呵~~~ //截取文本后四位 HtmlElement name = webBrowser1.Document.GetElementById("UserLogin2_txtEmailName"); HtmlElement pwd = webBrowser1.Document.GetElementById("UserLogin2_txtPassword"); HtmlElement CheckCode = webBrowser1.Document.GetElementById("UserLogin2_txtDatabase"); HtmlElement subm = webBrowser1.Document.GetElementById("UserLogin2_ImgCmdLogin"); name.Focus(); name.SetAttribute("value", "*****@*****.**"); pwd.Focus(); pwd.SetAttribute("value", "770716"); CheckCode.Focus(); CheckCode.SetAttribute("value", str.Substring(str.Length - 4)); subm.Focus(); subm.SetAttribute("onclick", "javascript:return true;"); //todo:验证码变了,也要变 ie.InstallTrace(); string js = "function CheckData(){return true;}"; ie.InstallScript(js); webBrowser1.Document.InvokeScript("Passfn"); subm.InvokeMember("click"); // MessageBox.Show(str.ToString()); //此处用图象识别功能吧! //todo:web登录信息保存了xml以后更改 //string code = webBrowser1.Document.Cookie; //if (!string.IsNullOrEmpty(code)) //{ // //填入验证框 // HtmlElement chekcode = webBrowser1.Document.GetElementById("UserLogin2_txtDatabase"); // chekcode.Focus(); // chekcode.SetAttribute("value", code.Substring(66, 4)); // //模拟提交 // HtmlElement subm = webBrowser1.Document.GetElementById("UserLogin2_ImgCmdLogin"); // subm.Focus(); // subm.InvokeMember("click"); //} }
private void cmdCopyImage_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 导航到页面 http://www.google.com.hk/imghp. ie.Navigate ( "http://www.google.com.hk/imghp" ); // 等待 5 秒钟, 以便页面载入完毕. ie.IEFlow.Wait ( 5 ); // 获取 id 为 hplogo 的 img 的图片. this.pictureBox.Image = ie.CopyImage ( "'hplogo'" ); }
private void cmdExecuteJQuery_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 导航到页面 http://www.google.com.hk/. ie.Navigate ( "http://www.google.com.hk/" ); // 等待页面载入完毕. ie.IEFlow.Wait ( new UrlCondition ( "wait", "http://www.google.com.hk", StringCompareMode.StartWith ) ); // 安装本地的 jquery 脚本. ie.InstallJQuery ( JQuery.CodeMin ); // 执行 jquery 脚本 $('*').length, 获得页面上总元素个数. Console.WriteLine ( "页面上共有 {0} 个元素", ie.ExecuteJQuery ( JQuery.Create ( "'*'" ).Length ( ) ) ); // 执行 jquery 脚本 $('a'), 获得页面上所有的 a 元素并将结果保存在 __jAs 变量中. ie.ExecuteJQuery ( JQuery.Create ( "'a'" ), "__jAs" ); // 得到 __jAs 变量中包含的 a 元素的个数. int count = ie.ExecuteJQuery<int> ( JQuery.Create ( "__jAs" ).Length ( ) ); for ( int index = 0; index < count; index++ ) { // 得到 __jAs 变量中索引为 index 的 a 元素, 并保存在 __jA 变量中. ie.ExecuteJQuery ( JQuery.Create ( "__jAs" ).Eq ( index.ToString ( ) ), "__jA" ); // 输出 a 元素的 innerText 和 href 属性. Console.WriteLine ( string.Format ( "a[{0}], '{1}', '{2}'", index, ie.ExecuteJQuery<string> ( JQuery.Create ( "__jA" ).Text ( ) ), ie.ExecuteJQuery<string> ( JQuery.Create ( "__jA" ).Attr ( "'href'" ) ) ) ); } }
public static void Discuz ( IEBrowser ie, string userName, string password, string url, string title, string content ) { // 导航到页面 dz 论坛的页面. ie.Navigate ( url ); // 等待 10 秒钟, 以便页面载入完毕. ie.IEFlow.Wait ( 10 ); // 安装资源中的 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery ( JQuery.Create ( false, true ).NoConflict ( ) ); // 安装 javascript 函数 clickLink, 根据超链接的文本点击超链接. ie.InstallScript ( "function clickLink(text) {" + " links = document.getElementsByTagName('a');" + " for(var index = 0; index < links.length; index++)" + " {" + " if(links[index].innerText == text)" + " {" + " links[index].click();" + " break;" + " }" + " }" + "}" ); // 是否存在已经登录后显示的短消息. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'#pm_ntc'", false ).Length ( ) ) == 1 ) { // 调用 javascript 函数 clickLink, 模拟点击退出链接. ie.InvokeScript ( "clickLink", new object[] { "退出" } ); // 等待 3 秒钟, 以便退出完毕. ie.IEFlow.Wait ( 3 ); // 重新调用自身. Discuz ( ie, userName, password, url, title, content ); return; } // 设置用户名. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_username'", false ).Val ( "'"+userName+"'" ) ); // 设置密码. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_password'", false ).Val ( "'"+password+"'" ) ); // 密码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#ls_password'", false ).Focus ( ) ); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait ( 5 ); // 获取验证码并显示给用户输入. FormVCode vCodeWindow = new FormVCode ( ); vCodeWindow.Image = ie.CopyImage ( "'vcodeimg1'" ); // 用户是否确认. if ( vCodeWindow.ShowDialog ( ) == DialogResult.OK ) { // 验证码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext_header1'", false ).Focus ( ) ); // 填写验证码并多加 1. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext_header1'", false ).Val ( "'" + vCodeWindow.VCode + "1'" ) ); // 模拟一个退格键, 删除掉 1. SendKeys.Send ( "{Backspace}" ); // 等待 2 秒. ie.IEFlow.Wait ( 2 ); // 登录框提交. ie.ExecuteJQuery ( JQuery.Create ( "'#lsform'", false ).Submit() ); // 等待 5 秒, 以便登录完成. ie.IEFlow.Wait ( 5 ); // 是否是验证码错误. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'p:contains(验证码错误)'", false ).Length ( ) ) == 1 ) { // 验证码错误重新登录. Discuz ( ie, userName, password, url, title, content ); return; } TOPIC: // 随机导航至某一话题. ie.Navigate ( "http://nt.discuz.net/showtopic-" + new Random ( ).Next ( 11000, 18000 ).ToString() + ".html" ); // 等待 5 秒, 以便页面完成. ie.IEFlow.Wait ( 5 ); // 安装 jquery 脚本的一系列操作. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); ie.ExecuteJQuery ( JQuery.Create ( false, true ).NoConflict ( ) ); // 话题不存在则重新选择. if ( ie.ExecuteJQuery<int> ( JQuery.Create ( "'p:contains(该主题不存在)'", false ).Length ( ) ) == 1 ) goto TOPIC; // 切换源码编辑方式. ie.InvokeScript ( "clickLink", new object[] { "Code" } ); // 填写内容. ie.ExecuteJQuery ( JQuery.Create ( "'#quickpostmessage'", false ).Val ( "'" + content + "'" ) ); // 验证码框获得焦点. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext1'", false ).Focus ( ) ); // 等待 5 秒钟以显示验证码. ie.IEFlow.Wait ( 3 ); // 获取验证码并显示给用户输入. vCodeWindow = new FormVCode ( ); vCodeWindow.Image = ie.CopyImage ( "'vcodeimg1'" ); // 用户是否确认. if ( vCodeWindow.DialogResult == DialogResult.OK ) { // 填写验证码并多加1. ie.ExecuteJQuery ( JQuery.Create ( "'#vcodetext1'", false ).Val ( "'" + vCodeWindow.VCode + "1'" ) ); // 模拟一个退格键, 删除掉 1. SendKeys.Send ( "{Backspace}" ); // 等待 2 秒. ie.IEFlow.Wait ( 3 ); // 提交. ie.ExecuteJQuery ( JQuery.Create ( "'#quickpostsubmit'", false ).Click ( ) ); } else { Discuz ( ie, userName, password, url, title, content ); return; } } else { Discuz ( ie, userName, password, url, title, content ); return; } }
private void cmdNoConflict_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 导航到页面 http://nt.discuz.net/, 此页面中已经定义了 $, 将和 jquery 的 $ 冲突. ie.Navigate ( "http://nt.discuz.net/" ); // 等待 5 秒钟, 以便页面载入完毕. ie.IEFlow.Wait ( 5 ); // 安装资源中的 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 解除 jquery 的 $ 定义, 但仍然可以只用 jQuery 定义. ie.ExecuteJQuery ( JQuery.Create ( false, true ).NoConflict ( ) ); // 执行 jquery 脚本 jQuery('*').length, 获得页面上总元素个数. Console.WriteLine ( "页面上共有 {0} 个元素", ie.ExecuteJQuery ( JQuery.Create ( "'*'", false ).Length ( ) ) ); }
//翻页的方法 /// <summary> /// 模式<a href="?pid=3&page=2">下一页</a> /// </summary> /// <param name="srcUrl">html页面的URL</param> /// <returns>下一页的URL</returns> private string AutoClickPageBar(string srcUrl) { //WebBrowser iBrowser = new WebBrowser(); IEBrowser ie = new IEBrowser(new WebBrowser()); ie.Navigate(srcUrl); //思路一:查找根据文本确定文本所在标签 //思路二:在所有<a>标签中查找文本是“下一页”的<a>标签 //思路三:正则表达式 string url = ""; return url; }
private void cmd163Blog_Click ( object sender, EventArgs e ) { // 从当前的 WebBrowser 控件创建 IEBrowser 对象. IEBrowser ie = new IEBrowser ( this.webBrowser ); // 此处修改为您的 163 博客地址. ie.Navigate ( "http://<163 博客地址>" ); ie.IEFlow.Wait ( 3 ); // 安装 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 弹出登录框. ie.ExecuteJQuery ( JQuery.Create ( "'a:contains(登录)'" ).Attr ( "'id'", "'denglu'" ) ); ie.ExecuteScript ( "document.getElementById('denglu').click();" ); // 填写用户信息并登录. ie.ExecuteJQuery ( JQuery.Create ( "'.ztxt:text'" ).Val ( "'<用户名>'" ) ); ie.ExecuteJQuery ( JQuery.Create ( "'.ztxt:password'" ).Val ( "'<密码>'" ) ); ie.ExecuteJQuery ( JQuery.Create ( "'.wbtnok:button'" ).Attr ( "'id'", "'dl'" ) ); ie.ExecuteScript ( "document.getElementById('dl').click();" ); ie.IEFlow.Wait ( 5 ); // 安装 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 跳转到日志页面. ie.ExecuteJQuery ( JQuery.Create ( "'a:contains(日志)' " ).Attr ( "'id'", "'rz'" ) ); ie.ExecuteScript ( "document.getElementById('rz').click();" ); ie.IEFlow.Wait ( 5 ); // 安装 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 跳转到编辑日志页面. ie.ExecuteJQuery ( JQuery.Create ( "'a:contains(写日志)' " ).Attr ( "'id'", "'xrz'" ) ); ie.ExecuteScript ( "document.getElementById('xrz').click();" ); ie.IEFlow.Wait ( 5 ); // 安装 jquery 脚本. ie.InstallJQuery ( Properties.Resources.jquery_1_5_2_min ); // 填写日志内容. ie.ExecuteJQuery ( JQuery.Create ( "'.ztag:text'" ).Val ( "'<标题>'" ) ); ie.ExecuteJQuery ( JQuery.Create ( "'#ne-auto-id-source'" ).Trigger ( "'click'" ) ); ie.ExecuteJQuery ( JQuery.Create ( "'textarea.ztag'" ).Val ( string.Format ( "'{0}'", IEBrowser.EscapeCharacter ( "<日志 html 代码>" ) ) ) ); ie.ExecuteJQuery ( JQuery.Create ( "'#ne-auto-id-source'" ).Trigger ( "'click'" ) ); ie.ExecuteScript ( "document.getElementById('key-093402170-autotag').click();" ); ie.IEFlow.Wait ( 5 ); // 发布日志. ie.ExecuteJQuery ( JQuery.Create ( "'.fc09:button'" ).Attr ( "'id'", "'fb'" ) ); ie.ExecuteScript ( "document.getElementById('fb').click();" ); }