PageObject with Ruby - definir texto em um campo de texto só funciona no arquivo principal
Estou automatizando um site que tem uma página com uma lista de opções selecionadas por um botão de opção. Ao selecionar um dos rádios, um campo de texto e uma lista de seleção são apresentado
Criei um arquivo (test_contracting.rb) que é aquele através do qual executo o teste (ruby test_contracting.rb) e algumas outras classes para representar minha págin
Na minha classe ContractPage, tenho a seguinte declaração de elemento:
checkbox(:option_sub_domain, :id => "option_sub_domain")
text_field(:domain, :id => "domain_text")
select_list(:tld, :id => "domain_tld")
Eu criei no ContractPage um método que define a configuração do domínio assim:
def configure_domain(config={})
check_option_sub_domain
domain = config[:domain]
tld = config[:tld]
end
Quando chamo o método configure_domain a partir do test_contracting.rb, ele seleciona o botão de opção, mas não preenche o campo com os valores. Os parâmetros estão entrando no método corretamente. Eu verifiquei usando "puts". Mesmo que eu mude os parâmetros para uma string geral como "bla", ela não funciona. O ponto irritante é que, se em test_contracting.rb eu chamar exatamente os mesmos componentes, ele funcionar
my_page_instance = ContractPage.new(browser)
my_page_instance.domain = "bla"
my_page_instance.tld = ".com"
O que eu encontrei para trabalhar foi no método configure_domain, implemente o seguinte:
domain_element.value = config[:domain]
tld_element.send_keys config[:locaweb_domain]
Então funcionou.
A documentação do módulo PageObjects que estou usando como referência pode ser encontrada aqui:http: //rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#select_list-instance_metho
Vocês têm alguma explicação sobre por que o método gerado automaticamente pelo objeto de página para definir o valor do objeto não funcionou neste escopo / context
Aliás, um amigo tentou a mesma coisa com Java e também falhou.