1

我正在发现关于 NHtmlUnit 来构建应用程序 Web。但是当我尝试使用自动登录到雅虎邮件时。但是在我运行代码之后。我刷新了雅虎的登录页面,所以没有任何改变。未登录。

代码:

        NHtmlUnit.WebClient driver = new NHtmlUnit.WebClient();

        driver.Options.JavaScriptEnabled = true;
        driver.Options.ThrowExceptionOnScriptError = false;
        driver.Options.ActiveXNative = true;
        driver.Options.CssEnabled = true;

        HtmlPage page = driver.GetHtmlPage("https://login.yahoo.com/config/login?");

        HtmlForm form = page.GetFormByName("login_form");
        HtmlTextInput user = (HtmlTextInput)form.GetInputByName("login");
        HtmlPasswordInput pass = (HtmlPasswordInput)form.GetInputByName("passwd");

        user.SetValueAttribute("my account");
        pass.SetValueAttribute("my pass");

        HtmlSubmitInput submitButton = (HtmlSubmitInput)page.GetElementByName(".save");

        HtmlPage nextpage = (HtmlPage)submitButton.Click();

请帮我解释为什么。我在 .NET MVC 4 C# 上编写它。非常感谢。

4

2 回答 2

0

仅在单行以下更新,因此您可能会遇到类转换异常

HtmlButton submitButton = (HtmlButton)page.GetElementByName(".save");
于 2014-01-07T19:15:19.047 回答
0

代码完全没问题,应该可以工作。

可能你认为不是的原因是你检查的方法不对!使网站(即 login.yahoo.com)将您视为已登录用户的一个基本要素是,当您使用登录表单时,它向您的浏览器/网络驱动程序提供 cookie,因此,如果您通过以下实例使用登录过程NHtmlUnit.Webclient( ie driver) 那么您只能在driverWeb 客户端中登录,而不是在任何其他浏览器或客户端中登录,即使在同一台机器上也是如此。

我试图将此添加为评论,但我没有足够的声誉。

于 2016-09-26T13:54:40.327 回答