Skip to content

Instantly share code, notes, and snippets.

@douglasmartins7
Created June 4, 2019 20:59
Show Gist options
  • Save douglasmartins7/618806764266a0134a0edb2f52603b23 to your computer and use it in GitHub Desktop.
Save douglasmartins7/618806764266a0134a0edb2f52603b23 to your computer and use it in GitHub Desktop.
Métodos para verificação
1) Primeiro iremos verificar os elementos com Assert(Afirmação).
1)assert_all_of_selectors
Afirma que todos os seletores fornecidos estão presentes na página ou nos descendentes do nó atual.
2)assert_none_of_selector
Afirma que nenhum dos seletores fornecidos está presente na página ou nos descendentes do nó atual.
2)assert_matches_selector
Afirma que o current_node corresponde a um determinado seletor.
4)assert_selector
Afirma que um determinado seletor está na página ou um descendente do nó atual.
5)assert_text
Afirma que a página ou o nó atual possui o conteúdo de texto especificado, ignorando quaisquer tags HTML.
2) Agora afirmando que o elemento não existe na tela com o Assert_not(afirmar que não)
1)assert_not_matches_selector
Afirma que o current_node não corresponde a um determinado seletor.
2)assert_no_selector
Afirma que um determinado seletor não está na página ou descendente do nó atual.
3)assert_no_text
Afirma que a página ou o nó atual não tem o conteúdo de texto especificado, ignorando quaisquer tags HTML.
3) Verificando elemento com o “Has(Tem)”.
1)has_checked_field?
Verifica se a página ou o nó atual tem um botão de opção ou caixa de seleção com o rótulo, valor ou ID fornecido, que está atualmente marcado.
2)has_select?
Verifica se a página ou o nó atual tem um campo de seleção com o rótulo, o nome ou o ID fornecido.
3)has_selector?
Verifica se um determinado seletor está na página ou um descendente do nó atual.
4)has_table?
Verifica se a página ou o nó atual possui uma tabela com o ID ou a legenda especificada
5)has_text?
Verifica se a página ou o nó atual tem o conteúdo de texto especificado, ignorando todas as tags HTML.
6)has_unchecked_field?
Verifica se a página ou o nó atual tem um botão de opção ou caixa de seleção com o rótulo, valor ou ID fornecido, que está atualmente desmarcado.
7)has_xpath?
Verifica se uma determinada expressão XPath está na página ou um descendente do nó atual.
8)has_button?
Verifica se a página ou o nó atual possui um botão com o texto, valor ou id fornecido.
9)has_css?
Verifica se um determinado seletor de CSS está na página ou um descendente do nó atual.
10)has_field?
Verifica se a página ou o nó atual tem um campo de formulário com o rótulo, o nome ou o ID fornecido.
11)has_link?
Verifica se a página ou o nó atual tem um link com o texto ou o ID fornecido.
4) Verificando elementos que não estão na tela com o “Has_no(Não Tem)”.
1)has_no_checked_field?
Verifica se a página ou o nó atual não tem nenhum botão de opção ou caixa de seleção com o rótulo, valor ou ID fornecido, que está atualmente marcado.
2)has_no_select?
Verifica se a página ou o nó atual não tem campo de seleção com o rótulo, nome ou id fornecido.
3)has_no_selector?
Verifica se um determinado seletor não está na página ou um descendente do nó atual.
4)has_no_table?
Verifica se a página ou o nó atual não possui tabela com o ID ou legenda especificada.
5)has_no_text?
Verifica se a página ou o nó atual não possui o conteúdo de texto especificado, ignorando qualquer tag HTML e normalizando o espaço em branco.
6)has_no_unchecked_field?
Verifica se a página ou o nó atual não tem botão de opção ou caixa de seleção com o rótulo, valor ou ID fornecido, que está atualmente desmarcado.
7)has_no_xpath?
Verifica se uma determinada expressão XPath não está na página ou descendente do nó atual.
8)has_no_button?
Verifica se a página ou o nó atual não possui um botão com o texto, valor ou id fornecido.
9)has_no_css?
Verifica se um determinado seletor de CSS não está na página ou um descendente do nó atual.
10)has_no_field?
Verifica se a página ou o nó atual não possui um campo de formulário com o rótulo, nome ou ID fornecido.
11)has_no_link?
Verifica se a página ou o nó atual não tem link com o texto ou o ID fornecido.
5) Verificando elementos com o Matches(Combina).
1)matches_css?
Verifica se o nó atual corresponde ao seletor de CSS especificado.
2)matches_selector?
Verifica se o nó atual corresponde ao seletor especificado.
3)matches_xpath?
Verifica se o nó atual corresponde a determinada expressão XPath.
6) Verificando os elementos não combinam com o Not_Matches(Não Combina).
1)not_matches_css?
Verifica se o nó atual não corresponde ao seletor de CSS fornecido.
2)not_matches_selector?
Verifica se o nó atual não corresponde ao dado seletor. O uso é idêntico ao has_selector ?.
3)not_matches_xpath?
Verifica se o nó atual não corresponde à expressão XPath fornecida.
Opções:
Esses métodos também contém opções para ajudar na busca desses elementos:
count(Integer)
Número exato de elementos que se espera encontrar.
maximum(Integer)
Número máximo de elementos que se espera encontrar.
minimum(Integer)
Número mínimo de elementos que se espera encontrar.
between(Range)
O número de correspondências encontradas deve estar dentro do intervalo determinado
exact(Boolean)
Controlar se as expressões ‘is’ no determinado Xpath correspondem exatamente ou parcialmente.
wait(Integer)
Por padrão o wait usa o Capybara.defaullt_max_wait_time como tempo padrão.Mas você pode passar o tempo para esperar que as expectativas de contagem de elementos se tornem verdadeiras
Agora vamos falar de espera de elementos na tela com SitePrism:
O Site Prism nos temos alguns métodos para esperar elementos estarem na tela:
1)wait_for_<elemento> (obs: está descontinuado a partir da versão 3.0.0 do Site_Prism)
Espera que um elemento esteja presente na página;
2)wait_until_<elemento>_visible
Espera que um elemento até ele ficar visível na página;
3)wait_until_<elemento>_invisible
Espera que um elemento esteja até ele ficar invisível na página;
4)has_<elemento>
Verifica que o elemento esteja na tela.
5)has_no_<elemento>
Verifica que o elemento não esteja na tela.
Agora vamos falar de Verificar elementos com RspecMatchers:
have_all_of_selectors ⇒ Verifica se os elementos correspondentes a um grupo de seletores existem .
have_button ⇒ Verifica se a página ou o nó atual possui um botão com o texto, valor ou id fornecido.
have_checked_field ⇒ Se a página ou o nó atual tiver um botão de opção ou uma caixa de seleção com o rótulo, valor ou ID fornecido, que está marcado no momento.
have_css ⇒ Verifica se um determinado seletor de CSS está na página ou um descendente do nó atual.
have_current_path ⇒ Afirma que a página tem o caminho fornecido
have_field ⇒ Verifica se a página ou o nó atual tem um campo de formulário com o rótulo, o nome ou o ID fornecido.
have_link ⇒ Verifica se a página ou o nó atual tem um link com o texto ou o ID fornecido.
have_none_of_selectors ⇒ Afirma que nenhum dos seletores fornecidos está presente na página ou nos descendentes do nó atual.
have_select ⇒ Verifica se a página ou o nó atual tem um campo de seleção com o rótulo, o nome ou o ID fornecido.
have_selector ⇒ Afirma que um determinado seletor está na página ou um descendente do nó atual.
have_table ⇒ Verifica se a página ou o nó atual tem uma tabela com o ID ou legenda fornecida
have_text ⇒ Afirma que a página ou o nó atual possui o conteúdo de texto especificado, ignorando quaisquer tags HTML.
have_title ⇒ Verifica se um determinado título esta na página.
have_unchecked_field ⇒ Verifica se a página ou o nó atual tem um botão de opção ou caixa de seleção com o rótulo, valor ou ID fornecido, que está atualmente desmarcado.
have_xpath ⇒ Verifica se uma determinada expressão XPath está na página ou um descendente do nó atual.
match_css ⇒ Verifica se uma quantia determinada CSS está na página ou descendente do seu atual.
match_selector ⇒ Afirma que o current_node corresponde a um determinado seletor
match_xpath ⇒ Correspondente RSpec para saber se o elemento atual corresponde a um determinado seletor de xpath.
Este post sobre wait_for_ajax é uma tradução do post original da Thoughtbot.
Wait_for_ajax
Capybara é muito bom em esperar por AJAX. Por exemplo, esse código continuará verificando a página do elemento para Capybara.default_max_wait_time segundos, permitindo que as chamadas AJAX terminem:
Mas há momentos em que isso não é suficiente. Por exemplo, neste código:
Temos uma condição de corrida entre click_link e reload_page. Às vezes, a chamada AJAX passa antes que a Capybara recarregue a página, e às vezes não. Esse tipo de teste não determinístico pode ser muito difícil de debugar, então eu adicionei um pequeno helper.
Helper:
Nós automaticamente incluímos todos os arquivos em /support em nosso helper.rb, então este arquivo é automaticamente requerido. Como apenas as especificações de recursos podem interagir com a página por meio de JavaScript ,O auxiliar usa a variável jQuery.active, que rastreia o número de solicitações AJAX ativas. Quando é 0, não há solicitações AJAX ativas, o que significa que todas as solicitações foram concluídas.
Veja como eu uso:
Agora não há nenhuma condição de corrida: a Capybara irá esperar que a solicitação de amizade do AJAX seja concluída antes de recarregar a página.
Se for usar dentro de um page objects basta incluir o módulo
Não há documentação oficial no jQuery.active, pois é uma variável interna, mas essa resposta do Stack Overflow é útil. Para ver como precisamos de todos os arquivos na especificação / suporte, leia nosso modelo spec_helper.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment