Ошибка авторизации BrowserStack Требуется

Недавно я взял на себя проект, который использует BrowserStack для мобильного тестирования в своей инфраструктуре автоматизации. Прокси, который мы использовали, вышел из строя, поэтому мне пришлось сменить системный прокси на рабочий, я не уверен, что они связаны, но это имеет смысл.

Я раньше менял прокси и не имел проблем, поэтому не уверен, почему это происходит сейчас. Использование C# с селеном, получение ошибки во всех браузерах. Я не знаю слишком много о стороне браузера в фреймворке, так как впервые работаю с ним.

Result StackTrace:  
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities)
   at Framework.CoreUtilities.CustomRemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities) in Framework\DriverMethods\CustomRemoteWebDriver.cs:line 12
   at Framework.CoreUtilities.BrowserStackDriverUtility.Init(String profile, String environment) in Framework\DriverMethods\BrowserStackDriverUtility.cs:line 43
   at Tests.CoreUtilities.DriverMethods.EnvironmentHooks.BrowserStackHooks.SelectBrowserStackDriver() in Framework\DriverMethods\EnvironmentHooks\BrowserStackHooks.cs:line 29
   at Tests.CoreUtilities.DriverMethods.EnvHooks.BeforeScenarioLocal() in Framework\EnvHooks.cs:line 43
   at lambda_method(Closure , IContextManager )
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.InvokeHook(IBindingInvoker invoker, IHookBinding hookBinding, HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireScenarioEvents(HookType bindingEvent)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnScenarioStart(ScenarioInfo scenarioInfo)
   at TechTalk.SpecFlow.TestRunner.OnScenarioStart(ScenarioInfo scenarioInfo)
   at Tests.Features.Sprint3.S03_SNO3519_View_All_Bills_MOBILEFeature.ScenarioSetup(ScenarioInfo scenarioInfo) in Tests\Features\Sprint3\S03_SNO3519_View_all_bills_MOBILE.feature.cs:line 0
   at Tests.Features.Sprint3.S03_SNO3519_View_All_Bills_MOBILEFeature.TC5_TC6_TC7_Verify_The_Functionality_Of_The_Dropdown_Filter_On_The_All_My_Bills_Page(String email, String password, String accountNumber, String accountType, String[] exampleTags) in Tests\Features\Sprint3\S03_SNO3519_View_all_bills_MOBILE.feature:line 10
--TearDown
   at BoDi.ObjectContainer.TypeRegistration.Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, ResolutionList resolutionPath, String name)
   at BoDi.ObjectContainer.<>c__DisplayClass55_0.<ResolveArguments>b__0(ParameterInfo p)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at BoDi.ObjectContainer.ResolveArguments(IEnumerable`1 parameters, RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.CreateObject(Type type, ResolutionList resolutionPath, RegistrationKey keyToResolve)
   at BoDi.ObjectContainer.TypeRegistration.Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, ResolutionList resolutionPath, String name)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, String name)
   at TechTalk.SpecFlow.Infrastructure.TestObjectResolver.ResolveBindingInstance(Type bindingType, IObjectContainer container)
   at TechTalk.SpecFlow.ScenarioContext.GetBindingInstance(Type bindingType)
   at Tests.CoreUtilities.DriverMethods.EnvHooks.AfterEachFeature() in Framework\EnvHooks.cs:line 83
   at lambda_method(Closure , IContextManager )
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.InvokeHook(IBindingInvoker invoker, IHookBinding hookBinding, HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireScenarioEvents(HookType bindingEvent)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnScenarioEnd()
   at TechTalk.SpecFlow.TestRunner.OnScenarioEnd()
   at Tests.Features.Sprint3.S03_SNO3519_View_All_Bills_MOBILEFeature.ScenarioTearDown() in Tests\Features\Sprint3\S03_SNO3519_View_all_bills_MOBILE.feature.cs:line 0
Result Message: 
OpenQA.Selenium.WebDriverException : Unexpected error. <HEAD><TITLE>Authorization Required</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black"><H1>Authorization Required</H1><HR>
<FONT FACE="Helvetica,Arial"><B>
Description: Authorization is required for access to this proxy</B></FONT>
<HR>
<!-- default "Authorization Required" response (401) -->
</BODY>

TearDown : BoDi.ObjectContainerException : Interface cannot be resolved: OpenQA.Selenium.IWebDriver (resolution path: Framework.SeleniumContext)

1 ответ

Это кажется проблемой, специфичной для того, как привязки языка селена генерируют полезную нагрузку и как браузерный стэк анализирует ее в конце.

Судя по сообщению об ошибке, которым вы поделились, вполне вероятно, что при анализе полезной нагрузки запроса, browserStack не может найти ваше имя пользователя и ключ доступа

Вы можете выполнить шаги, указанные ниже, чтобы отладить это:

  • Изменить драйвер строки = новый RemoteWebDriver(новый Uri (" https://hub-cloud.browserstack.com/wd/hub/"), параметры); to driver = new RemoteWebDriver(новый Uri (" http://localhost:4444/wd/hub/"), параметры);. От вас не требуется запускать селеновый сосуд локально.

  • Запустите прокси, который читает трафик на localhost:4444. (Вы можете использовать реализацию на основе узла для того же самого, если это необходимо. Вот одна из таких реализаций: https://gist.github.com/hanikhan/f817bd64b063129cb78dc7ed0b66fdb7)

  • Наблюдайте полезную нагрузку запроса, генерируемую привязками клиента selenium, которые вы используете (v3.14, как вы упомянули). Например, мой селен-клиент на основе Java генерирует это, когда передается только браузер - требуемые возможности {"требуемые возможности":{"browserName":"Chrome"},"abilities":{"firstMatch":[{"browserName":"Chrome"}]}}

  • Теперь понизьте привязки к селену (до версии, в которой он работал) и посмотрите, какую полезную нагрузку он создает.

Проверьте, используют ли клиентские привязки строгие проверки, из-за которых некоторые требуемые возможности отбрасываются с вашей стороны.

Если это так, то вам необходимо сделать следующее:

  • Поднимите проблему с привязками селена C#, чтобы убрать строгие проверки для вашего случая
Другие вопросы по тегам