2013-04-17 87 views
0

我有一个程序,我创造了工作,跟踪信息。我们从各种内部网站获取这些信息。我希望在我的程序中包含一个表单,该表单本质上是一个定制的Web浏览器,可让我更轻松地浏览这些网站。这是一个学习项目,请原谅我的经验。登录到网页上的按钮点击网页浏览器控制

对于这个问题,我正在寻找一种方式来加载浏览器控件的页面后,我可以从存储在字符串中的凭据登录到该页面。我没有访问该网站的HTML代码我试图输入这些信息,并已经看到很多关于如何通过GetElementId做到这一点的教程,但是在使用Firebug之后,我发现我需要输入的两个文本框都没有一个ID(我可以看到)。该网站永远不会改变,我确实考虑过使用GetElementFromPoint,但不知道如何以这种方式去做,看起来并不理想。 GetElementsByTagName似乎是解决这个问题的最佳方式,但我不确定如何实现代码。

这里是我能从萤火虫得到的两个元素的信息。

用户名文本框: <input type="text" name="j_username" size="12" onblur="this.value=this.value.toLowerCase(); setUserIdCookie();" click="this.value=this.value.toLowerCase();" onkeyup="this.value=this.value.toLowerCase();">

密码文本框:

<input type="password" onkeypress="checkCapsLock(event)" name="j_password" size="12"> 

,所以我需要从我的WinForm的usernameStringpasswordString传递到例如为j_username,然后到为j_password,然后单击内<input type="submit" name="submit" value="Login">按钮网络控制。如果我可以从这个网站了解如何解决这个问题,我应该可以从中学到足够的知识以在其他网站上实施。

在此先感谢您的帮助,请让我知道是否需要任何其他信息。

完整的HTML代码:

<form method="POST"action="j_security_check" name="login"> 
<table border="0"width="30%"cellspacing="3"cellpadding="2"> 
    <tr> 
    <td class="default"><b>Login</b></td>  
    <td class="default"><input onkeyup="this.value=this.value.toLowerCase();" 
     click="this.value=this.value.toLowerCase();" 
     onblur="this.value=this.value.toLowerCase(); setUserIdCookie();"  
     type="text"size="12" name="j_username"></td>  
    </tr>  
    <tr>  
     <td class="default"><b>Password</b></td>  
     <td class="default"><input type="password" size="12" 
     name="j_password"onKeyPress="checkCapsLock(event)"></td>  
    </tr>  

    <tr>  
    <td colspan="2" align="center"><p class="default"> 
    <inputtype="submit"value="Login"name="submit"></td> 
    </tr> 
    </table> 
    </form> 

编辑

我已经找到一种方法来输入到箱子

  var x = webBrowser1.Document.All.GetElementsByName("j_username"); 
     x[0].InnerText = (usernameString); 
     var y = webBrowser1.Document.All.GetElementsByName("j_password"); 
     y[0].InnerText = (passwordString); 

但我有麻烦搞清楚如何点击登录按钮

+0

当您尝试访问登录按钮时,您会看到哪些选项? – Brian

+0

我发现当然在发布这个哈哈感谢回复虽然 – Nabbic

回答

1

当然后面发布这个不错的长篇文章,并在这个工作了几个小时,我终于偶然发现了答案。对于任何有同样问题的人,我都在这里完成这个任务。在我的情况下,这种解决方案效果很好:

private void button4_Click(object sender, EventArgs e) 
{ 
    //Set username and password strings 
    string usernameString = "username"; 
    string passwordString = "password"; 

    //Input in to username field 
    var x = webBrowser1.Document.All.GetElementsByName("j_username"); 
    x[0].InnerText = (usernameString); 

    //Input in to password fields 
    var y = webBrowser1.Document.All.GetElementsByName("j_password"); 
    y[0].InnerText = (passwordString); 

    //Click the login button 
    var s = webBrowser1.Document.All.GetElementsByName("submit"); 
    s[0].InvokeMember("click"); 
}