2013-10-15 66 views
4

我正在创建一个带有自动登录到网站的Web浏览器控件的窗体。当我调试它时,我可以看到它启动到站点并填写用户名和密码,但一旦登录,它将再次通过相同的代码,因此导致错误,因为它找不到相同的元素。为什么程序在这段代码中循环?我是否将代码输入到错误的事件处理程序中?在网页浏览器控件上自动登录

namespace MyProject 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     HtmlDocument doc = webBrowser1.Document; 
     HtmlElement username = doc.GetElementById("UserName"); 
     HtmlElement password = doc.GetElementById("Password"); 
     HtmlElement submit = doc.GetElementById("submit"); 
     username.SetAttribute("value", "XXXXXXXX"); 
     password.SetAttribute("value", "YYYYYYYYYY"); 
     submit.InvokeMember("click"); 
    } 
} 
} 
+0

'造成error'和错误是....? – tnw

回答

3

每当任何文件完成加载DocumentCompleted事件触发。
登录后,当您加载下一页时,事件再次触发。

如果您在实际的登录页面,您应该检查URL并仅执行自动登录。

(并确保不会自动登录,如果网络钓鱼者会将您的应用假的登录页面来窃取用户的密码)

+0

我试图把一个if语句来检查URL,但显然我不能使用webBrowser1.Url =“http://someurl.com”。你介意告诉我如何检查URL?对不起,这样的菜鸟。 –

+0

@LatexPerson:为什么不呢?你得到了什么错误? – SLaks

+0

我在asp.net中使用webbrowser。自动登录在测试本地时工作正常,但如果服务器失败。我使用Response.Write(),我看到用户名和密码设置正确,显然登录按钮被按下,因为它重复加载页面(如果url是登录网址,它导航到默认页面,重复的意思是不成功登录默认页面再次重定向到登录页面)。可能是什么问题? –

2
namespace MyProject 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     bool is_sec_page = false; 

     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (!is_sec_page) 
      { 
       HtmlDocument doc = webBrowser1.Document; 
       HtmlElement username = doc.GetElementById("UserName"); 
       HtmlElement password = doc.GetElementById("Password"); 
       HtmlElement submit = doc.GetElementById("submit"); 
       username.SetAttribute("value", "XXXXXXXX"); 
       password.SetAttribute("value", "YYYYYYYYYY"); 
       submit.InvokeMember("click"); 
       is_sec_page = true; 
      } 
      else 
      { 
       //intract with sec page elements with theire ids and so on 
      } 
     } 
    } 
} 
相关问题