NHtmlUnit无法提交按钮

时间:2014-01-03 09:07:39

标签: submit nhtmlunit

我发现了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#上写它。非常感谢你。

2 个答案:

答案 0 :(得分:0)

仅更新以下单行,因此您可能会遇到类投射异常

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

答案 1 :(得分:0)

代码完全正常,应该有效。

您认为不是的原因可能是您用错误的方法检查它! 使站点(即login.yahoo.com)将您视为登录用户的一个基本要素是,当您使用登录表单时,它为您的浏览器/ webdriver提供的cookie,因此如果您使用登录过程{ {1}}(即NHtmlUnit.Webclient)然后您只能登录driver网络客户端,而不是在任何其他浏览器或客户端内,即使在同一台计算机上也是如此。

  

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