Dúvida Protractor - Click() em Radio Button

Prezados, estou com a seguinte situação:

Estou tentando realizar um click() no radio de ‘Sexo’ apontando corretamente para o elemento.

1_1501690889699_html.png

Porém ao rodar o teste, não é realizada a seleção e estoura erro informando que o radio não é clicável, e que outro elemento, acima hierarquicamente, irá receber o click.

Fiz o page object implementando a seleção do radio do sexo masculino, por exemplo, da seguinte forma, então não creio que o erro seja do modo que fiz:

var Helper = require('../helper.js');

var helper = new Helper();

var Perfil = function() {
    this.SexoMasculino = element(by.css('[type="radio"][value="M"]'));
};

Perfil.prototype.SelecionarSexoMasculino = function() {
    helper.ScrollAteElemento(this.SexoMasculino);
    this.SexoMasculino.click();
};

module.exports = Perfil;

Erro:
0_1501690889698_cmd.png

Erro no report:
2_1501690889700_report.png

Alguém saberia de alguma solução para selecionar o sexo do candidato?

Já tentou isto?

browser.actions().mouseMove(this.SexoMasculino).click();

https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_ActionSequence.html

@samuellucas said in Dúvida Protractor - Click() em Radio Button:

Já tentou isto?

browser.actions().mouseMove(this.SexoMasculino).click();

https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_ActionSequence.html

Obrigado pela dica Samuel.

Implementei as 3 formas seguintes e novamente não deu certo.
1 - Com o que implementei inicial dava erro que não era clicável.
2 - Com a sua sugestão parou de dar erro e simplesmente continua sem selecionar o radio.
3 - Com a outra forma que implementei continua a mesma coisa da sua.

Perfil.prototype.SelecionarSexoMasculino = function() {
	helper.ScrollAteElemento(this.SexoMasculino);
	//browser.actions().mouseMove(this.SexoMasculino).click();
	browser.actions().click(this.SexoMasculino);
	//this.SexoMasculino.click();
};

Já tentou a seleção por outro elemento? Ou até a gambi marota de selecionar o campo acima e jogar um tab para ver se ele capta esse elemento ? (a gambi é só para ver…não usa uma porcaria dessas…)

ps: Campo sexo do tipo RadioButton, foi feito manualmente por limitações da...
Olha a gambi ae…aeuheauhaeuhe

Ok @Paulo-Gonçalves ;/

Duas dúvidas:

  • Tu consegue interagir com algum outro elemento deste formulário?
  • Essa tua aplicação utiliza algum frame / sobre frame?

E agora, três outras tentativas:

  • Se usa algum frame, confere e altera para o frame correto no momento do clique:
browser.switchTo().frame('id ou anyway que mapeie o frame');

https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html

  • Altera o identificador css para input, considerando o valor que tu espera. Pode dar problema se tu tiver mais de um radio b na mesma tela e com os mesmos valores
this.SexoMasculino = element(by.css('input[value="M"]'));
  • Tenta trocar de css selector para xpath com axes. Pelo que estou vendo, na estrutura do teu html vai ficar algo mais ou menos assim:
//*[contains(text(), 'Feminino')]/preceding::input

https://www.w3schools.com/xml/xpath_axes.asp

Neste caso quem sabe você pode utilizar o seguinte:

browser.executeScript(“document.querySelector(”[type=‘radio’][value=‘M’]").click();");

quem sabe poderia até criar uma função helper que execute este código, para não sujar o código do teste.

@Paulo-Gonçalves cara, calma, não vai pros lados de xpath e muito menos JS diretamente antes de tentar outros seletores. Esse problema é normal e acontece quando uso o Capybara com Chrome também, é só clicar no label em vez do elemento em si.

No seu caso, acho que seria [for=controller_model.ppessoadadospessoais[0].sexo] . Usa isso como seletor CSS.

Um exemplo de um teste meu que interage com um radio button (no Capybara):

find("[for=cms_page_content_attributes_team_attributes_0_type_network]").click'

@stefanteixeira said in Dúvida Protractor - Click() em Radio Button:

@Paulo-Gonçalves cara, calma, não vai pros lados de xpath e muito menos JS diretamente antes de tentar outros seletores. Esse problema é normal e acontece quando uso o Capybara com Chrome também, é só clicar no label em vez do elemento em si.

No seu caso, acho que seria [for=controller_model.ppessoadadospessoais[0].sexo] . Usa isso como seletor CSS.

Um exemplo de um teste meu que interage com um radio button (no Capybara):

find("[for=cms_page_content_attributes_team_attributes_0_type_network]").click'

Opa @stefanteixeira, obrigado pela dica, assim que realizar o teste informo o resultado.
Eu mesmo tenho total preconceito com xpath devido a não ser uma boa prática de automação.

XPath salva vidas em alguns casos, o negócio é usar com muita moderação. O próprio Capybara tem uns recursos que facilitam vc a não ter que usar xpath, conforme fui aprendendo os recursos do framework fui refatorando o código e usando xpath somente onde necessário.

Log in to reply

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