2015-08-29 2 views
0

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

ответ

Смежные вопросы