Selenium - Combobox

Boa tarde,
Estou automatizando um processo de sign up com o selenium e eu tenho uma combo pais, que eu pego o id com o comando click e alv:
css=#select_option_553 > div.md-text.ng-binding porém o numero 553 que corresponde a um pais, na próxima vez que vou executar ele muda, sendo assim o selenium não encontra esse numero e dá erro, o que eu posso fazer?

O processo que vou citar é uma merda, mas…
Já tentou fazer uma lista para captar o pais pelo nome de apresentação?

Ou chegou a ver outro elemento junto do nome do país que possa ajudar?

@Ramses-Saccol-de-Almeida Não deu certo dessas maneiras.

@Murilo-Machado está usando IDE ou webdriver?

manda o trecho do seu código e o trecho do código fonte do select para gente melhorar nossos pitacos :)

Segue o que estou fazendo no ide, pode estar ruim pois estou começando a mexer com isso.

0_1461872822053_Captura de Tela 2016-04-28 às 16.46.32.png

Código do campo
0_1461872684584_Captura de Tela 2016-04-28 às 16.44.18.png

-1

Usa XPATH neste caso…

xpath=//div[contains(text(),'Afghanistan')]

OBS: o que tu estás selecionando não é exatamente uma combo (elemento select) mas sim um componente que simula uma combo ;-)

Sempre que tu tem um elemento e a interação é feita pelo texto do elemento tenta usar a função contains do XPath.

@Elias-Nogueira mas no selenium ide, como ficaria o comando , o alvo e o valor?

@Murilo-Machado hmmm

tenho algumas dicas pra você.

  • Espere pelo Elemento antes de clicar nele ( se o select é gerado quando se seleciona alguma opção…)
  • Parece que você realmente quer o value do país… por isso não deveria mudar ( senão não sentido a questão do select… (veja se existe essa opção no selenium IDE) … :)

@Murilo-Pedroso Da mesma forma que tu faz hoje… Só trocar os teus cssSelectors pelo XPath

muito obrigado @Elias-Nogueira funcionou. mas agora estou com outro problema pq nesta mesma tela eu tenho dois campos de country e na hora que rodo o script ele coloca a informação no campo errado. como eu acrescento o id do campo neste comando?

Aconselho verificar se no parent do elemento existem diferenças, se o id não mudar poderias usar:
xpath=//md-option[@id=‘select_option_29’]//div[contains(text(),‘Afghanistan’)]

:)

“Always pass on what you have learned.”

@Vanilton não funcionou ele continua indo para outra combo.

Mas outra dúvida, com o comando xpath=//div[contains(text(),‘Albania’)] ele abre a combo e seleciona o nome,. eu usei o comando clique mas ele não clica no nome.

Mas você já selecionou o country, qual seria a necessidade de clicar nele novamente?

Se puderes mostrar o html que exibe os campos dos country facilita pra tentar ajudar.

“Always pass on what you have learned.”

@Vanilton pq ele não seleciona o registro, ele continua com a combo box aberta. 0_1461953088565_Captura de Tela 2016-04-29 às 15.04.34.png

@Murilo-Pedroso , já pensou em dar outro comando, tipo um tab ou algo do genero?

Estranho ele selecionar e não clicar, talvez o elemento não seja clicável,

mas aconselho quando estiver migrando seus scripts para o webdriver usar o Action para simular ações do usuário como o abaixo escrito em binding Java:

Actions action = new Actions(driver);
WebElement element = driver.findElement(By.xpath("//div[contains(text(),‘Albania’)]");
action.moveToElement(element).build().perform();
action.click(element).build().perform();

Costumo usar isto quando é esse tipo de “combo” ele move o scroll até o elemento e em seguida clica.

Mas desconheço se é possível fazer isto na Selenium IDE.

“Always pass on what you have learned.”

This post is deleted!

MIgrar para o webdriver vai ser difícil. não estou nem conseguindo fazer no IDE.
O problema que toda forma de identificar um campo os ide são dinâmicos.

@Murilo-Pedroso Por isso eu falei que por ID não resolve…

Se vc está usando um select*… utilize o campo VALUE que tecnicamente não deveria mudar.

depois que clicar no select…

tenta usar esse xpath:

//md-option[@value='valor_do_pais']

pelo que eu entendi… o ID é dinamico, porém se ele vai mandar algum dado para formulário… alguma coisa tem que ser estático… como o nome ou valor.

@Murilo-Pedroso Tu tens dois selects (ou pseudo-selects) com mesmo id’s, isso?
Ai tu quer interagir com um ou com outro, isso?

Se for sim para as duas perguntas, posta o trecho HTML dos dois aqui pra mim?
Independente de tu for usar o Selenium IDE ou WebDriver, neste caso, a solução será sempre a mesma pois trata da forma de localizar os elementos ;)

Abraço!

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.