Estou usando RSpec2 e Capybara para testes de aceitação.
Gostaria de afirmar que o link está desabilitado ou não na Capivara. Como posso fazer isso?
ruby-on-rails
rspec
capybara
Kriysna
fonte
fonte
Outra solução simples é acessar o atributo HTML que você está procurando com
[]
:Observe que
Capybara
tentará automaticamente aguardar a conclusão das solicitações assíncronas, mas pode não funcionar em alguns casos:Esta é uma solução alternativa se você estiver tendo problemas com afirmações em elementos que são atualizados de forma assíncrona:
fonte
find('a#my_element[href]')
, seria possível recuperar o valor deste atributo? Tentando expressões como,find('a#my_element[href]').value
mas não parece funcionar :(find('a#my_element[href]').text
oufind('a#my_element[href]').native
. Deixe-me saber se algum deles der os resultados esperados.Foi um pouco confuso descobrir o xpath correto, aqui está o correto,
usando capivara 0.4.1.1
Se você só tem um link sem classe, use
Infelizmente, algo assim não funcionará:
A opção de classe será ignorada.
fonte
Eu recomendo usar
have_link
efind_link(name)[:disabled]
em duas afirmações separadas. Embora executar a segunda asserção sozinha seja mais simples, isso faz com que as mensagens de erro sobre links ausentes pareçam mais agradáveis, tornando os resultados do teste mais fáceis de ler.Observe que
"Example"
pode ser alterado para o nome ou id do link.fonte
have_link espera um hash de opções que estará vazio se você não fornecer nenhuma. Você pode especificar quaisquer atributos que o link deva ter - apenas certifique-se de passar todas as opções em UM hash.
Espero que isto ajude
PS: Para atributos como o método de dados, você deve passar o nome do atributo como uma string, já que o hífen quebra o símbolo.
fonte
class:
não é válidoSempre que possível, você deve tentar usar os wrappers fornecidos pelo Capybara, que funcionarão de forma mais consistente entre os drivers.
Para o caso específico de
disabled
, um wrapper foi introduzido em 2.1: https://github.com/jnicklas/capybara/blob/fc56557a5463b9d944207f2efa401faa5b49d9ef/History.md#version-210Se você usá-lo, obterá resultados sensíveis tanto no RackTest quanto no Poltergeist:
HTML:
Testes:
Observe como, ao usar isso em vez de seletores CSS, os testes de Javascript funcionarão sem nenhuma alteração se você começar a usar um driver compatível com Js.
Arquivo de teste executável aqui .
fonte
bowsersenior , obrigado por uma dica
Aqui está um exemplo:
fonte
Usando a sintaxe de Rspec3, fiz desta forma:
fonte
Simplesmente você pode usar o
page.has_css?
métodoisso retornará
true
se o elemento existir.Faça alguma ação com base na validação.
fonte
De acordo com os documentos, você pode usar a sintaxe do acessador [atributo]:
Para deficientes físicos, você também pode fazer o seguinte:
fonte