У меня есть единичный тест, который имитирует логин на Uber. Цель состоит в том, чтобы получить токен, который не доступен другим способом без интерактивного входа в систему. У меня было это работает в переданном, но похоже, что интерфейс входа в Uber изменился, и теперь у меня возникают проблемы с получением NHtmlUnit для успешной отправки кнопки входа.Невозможно нажать кнопку, используя 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
, но это, как представляется, является одним из изменений, сделанных Убер. Возможно, это часть проблемы?