无法使用WebBrowser登录网站

时间:2017-02-03 07:42:50

标签: c# .net web-scraping webbrowser-control

我正在尝试以编程方式登录1个网站。我有以下代码不起作用:

WebBrowser webBrowser = new WebBrowser();
webBrowser.Navigate("http://www.smarsy.ua");
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    System.Windows.Forms.Application.DoEvents();
System.Threading.Thread.Sleep(500);

HtmlDocument doc = webBrowser.Document;
doc.GetElementById("username").InnerText = "username";
doc.GetElementById("password").InnerText = "password";
doc.GetElementById("inputButton").InvokeMember("Click");

while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    System.Windows.Forms.Application.DoEvents();
System.Threading.Thread.Sleep(500);

webBrowser.Navigate("http://smarsy.ua/private/parent.php");
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    System.Windows.Forms.Application.DoEvents();
System.Threading.Thread.Sleep(500);

网页:

...
<input class="validate[required,minSize[8],custom[onlyNumber]] full" type="text" id="username" name="username" maxlength="8" value="" data-com.agilebits.onepassword.user-edited="yes" data-cip-id="username" autocomplete="off">
...
<input class="validate[required,minSize[6],custom[onlyPassword]] full" type="password" id="password" name="password" maxlength="24" value="" data-cip-id="password" data-com.agilebits.onepassword.user-edited="yes">
...
<input type="submit" name="submit" value="Ввійти" class="full passive">

怎么了?或者您可能会建议我使用C#

废弃网站的好框架

1 个答案:

答案 0 :(得分:1)

您的问题是按钮没有被您的方法点击。我测试了它如下:

替换您的代码行:

doc.GetElementById("inputButton").InvokeMember("Click");

有了这个:

HtmlElementCollection Bclick = webBrowser.Document.GetElementsByTagName("input");
        foreach (HtmlElement Btn in Bclick)
        {
            string name = Btn.Name;
            if (name == "submit")
                Btn.InvokeMember("click");
        }