【问题标题】:Unable to click button using NHtmlUnit使用 NHtmlUnit 无法单击按钮
【发布时间】:2015-08-29 16:38:38
【问题描述】:

我有一个模拟 Uber 登录的单元测试。目标是获取一个在没有交互式登录的情况下无法访问的令牌。我已经完成了这项工作,但似乎 Uber 登录体验已经改变,现在我在让 NHtmlUnit 成功提交登录按钮时遇到问题。

这是我最近的尝试:https://github.com/wadewegner/uber-sdk-for-net/blob/42fd845fe43e11e3153b07d830ed40e3577b1ed3/src/UberSDKForNet.FunctionalTests/Tests.cs#L100

这里是关键区域:

var loginFormButtons = loginForm.GetElementsByTagName("button");
Assert.IsNotNull(loginFormButtons);

var loginButton = (HtmlButton)loginFormButtons.First();
Assert.IsNotNull(loginButton);

var loginButtonText = loginButton.AsText();
StringAssert.Contains("sign in", loginButtonText.toLowerCase());

loginButton.SetAttribute("type", "submit");
loginForm.AppendChild(loginButton);

var consentPage = (HtmlPage)loginButton.Click();
Assert.IsNotNull(consentPage);

我知道代码很冗长,但是对 NHtmlUnit 进行单元测试是一场噩梦。我也尝试了很多不同的排列方式,但它们几乎都以HtmlButton 结尾。

https://github.com/wadewegner/uber-sdk-for-net/blob/42fd845fe43e11e3153b07d830ed40e3577b1ed3/src/UberSDKForNet.FunctionalTests/Tests.cs#L174 之前一切正常。我希望这会将我带到同意页面,我可以在该页面允许或拒绝 Uber 应用程序访问我的信息。但是,它似乎只是重新加载原始页面,consentPage 似乎与loginPage 相同。

任何可能有一些想法的 NHtmlUnit 专家?

我还要指出的唯一一件事是,过去我能够成功使用HtmlSubmitInput 而不是HtmlButton,但这似乎是优步所做的更改之一。也许这是问题的一部分?

【问题讨论】:

    标签: oauth-2.0 nunit nhtmlunit


    【解决方案1】:

    嗯,它并不完美,但似乎将WebClient 设置为FIREFOX_17 而不是CHROME 解决了它。

    var webClient = new WebClient(BrowserVersion.FIREFOX_17);
    

    请看这里:https://github.com/wadewegner/uber-sdk-for-net/blob/ceb1cdf80cebb31608744c050b649ddd6a75fb7a/src/UberSDKForNet.FunctionalTests/Tests.cs#L107

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-30
      • 2019-05-30
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多