it-swarm-pt.tech

Como usar fill_in com find em Capivara (se possível)

Eu gostaria de fazer o seguinte, mas não posso devido à natureza de fill_in esperando um localizador como o primeiro argumento.

find(:css, "input[id$='donation_pledge_hundreds']").fill_in :with => "10"

Eu também tentei fazer

element = find(:css, "input[id$='donation_pledge_hundreds']")   
fill_in element.<method> , :with => "10"

mas não há métodos que retornam dados para identificar o elemento para fill_in.

Alguma idéia da melhor maneira de encontrar um campo através de um regex para uso com fill_in?

87
ants

Indo da memória, pode não ser 100% correto, mas acho que se você tiver uma referência ao elemento em si, você usaria set em vez de fill_in:

find(:css, "input[id$='donation_pledge_hundreds']").set("10")

No entanto, para o seu exemplo específico, fill_in deve ser capaz de encontrar o elemento como você sabe que é ID:

fill_in 'donation_pledge_hundreds', with: "10"
149
Jon M

Em vez de um método, você pode usar colchetes para retornar :name ou :id, por exemplo, element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" A mesma abordagem pode ser usada com select - select my_type, from: find('select[name$="[type]"]')[:name]

5
user2001785
find("input[id$='donation_pledge_hundreds']").set "10"

Vale a pena notar que você pode encadear seus achados.

@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"
3
Nate
fill_in <$id>, :with => 'text you want to fill in'
0
Chints Vadgama