Tenho a seguir dois elementos em HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
Estou tentando encontrar o elemento usando o método Capivara
find("a", :text => "berlin")
Acima retornará dois elementos porque ambos contêm o texto berlim.
Existe uma maneira de combinar o texto exato na Capivara?
Respostas:
Basta usar a opção exata da Capivara :
fonte
Use um regexp em vez de uma string para o valor da
:text
chave:Verifique a seção 'Opções Hash' da
Method: Capybara::Node::Finders#all
documentação .PS: as correspondências de texto diferenciam maiúsculas de minúsculas. Na verdade, seu código de exemplo gera um erro:
fonte
click_link(link_text, :text => link_text)
Dependendo de qual versão da gema você está usando
pode estar obsoleto. Nesse caso, você teria que usar
fonte
Minha preferência é usar
have_selector
comtext
eexact_text: true
:fonte
Você também pode fazer isso:
Isso encontrará para CSS.
E usar apenas em
exact: true
vez deexact_text
mostrará uma mensagem de que aexact
opção só é válida para XPATH.fonte
find("a", exact_text: "berlin")
Para usar click_link em capivara você precisa adicionar mais uma propriedade no método usando-o.
Aqui, o link_name é o valor de texto de um link. Usando : palavra-chave de texto , estamos especificando que queremos clicar em um link com o valor de texto que corresponde exatamente às nossas necessidades.
fonte