Atualmente, estou tentando usar o Selenium Grid 2 para executar testes de automação em vários navegadores. Durante a minha pesquisa me deparei com Baseclass.Contrib.Specflow que me permite usar os navegadores como tags nos arquivos de resources sem ter que declará-lo na minha class principal do driver. O problema que tenho é que um dos blogs que eu li tinha o seguinte como o código de configuração
[SetUp] public void Test_Setup(){ CurrentDriver = Browser.Current;}
A aparência do meu arquivo de configuração do aplicativo contém o seguinte:
<!-- -->
Eu recebo um erro quando tento executar o script usando o método de instalação acima.
Erro:
System.Collections.Generic.KeyNotFoundException: A chave fornecida não estava presente no dictionary
O blog que eu recebi esta solução não parece responder a perguntas sobre isso, então estou um pouco desesperado. Isso basicamente permitirá que eu faça o seguinte no arquivo de recurso e faça testes para serem executados com base na tag
@Browser:Firefox @Browser:Chrome
Espero que isso seja informação suficiente para me dar conselhos.
O erro que você está cometendo aqui é que você está anotando todo o seu arquivo de recurso com a tag @Browser
.
Baseclass.Contrib.Specflow
permite que você anote cenários com navegadores de suporte a cenários. Portanto, você precisa anotar cada cenário.
Se você não fizer isso, não haverá nenhum Navegador Atual configurado para esse teste e se tentar acessar o Browser.Current
lançará o System.Collections.Generic.KeyNotFoundException
.
Você sabe que está fazendo certo quando os Testes de Unidade gerados includeão o nome do Navegador como parte do nome do teste de unidade, como
on with:
Exemplo:
@Browser:IE @Browser:Chrome @Browser:Firefox Scenario Outline: Add Two Numbers >Given I navigated to / using And I have entered into summandOne calculator And I have entered into summandTwo calculator When I press add Then the result should be on the screen Scenarios: | summandOne| summandTwo|result| | 10 | 20 | 30 | | 3 | 4 | 7 |