0

我有一个模拟 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但这似乎是 Uber 所做的更改之一。也许这是问题的一部分?

4

1 回答 1

0

好吧,它并不完美,但似乎将其设置WebClientFIREFOX_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

于 2015-08-29T21:35:06.157 回答