Erro de elemento não visível (não é possível clicar em um elemento)

Eu quero clicar em um botão de opção, aparece em uma página da web. O código é o seguinte:

Código HTML:

Tesstcase:

 // demo-test.js describe('Protractor Demo App', function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000000; it('check item count', function() { browser.get(''); element(by.id('mumbaiCity')).click(); }); }); 

Este teste atravessa o erro:

1) Contagem de itens de verificação do aplicativo Demo do transferidor

Mensagem:

Falha: elemento não visível

Eu também tentei com:

 element(by.css('[ng-click="main.setCity('Mumbai', 1)"]')).click(); 

Isso dá erro:

[16:16:26] E / launcher – Erro: SyntaxError: missing) depois da lista de argumentos

Por favor sugerir, como o radio button vai ter clique?

Esse é um problema bastante comum na automação de testes com o selenium.

Aqui estão as soluções comuns:

  • Verifique se o elemento que você deseja clicar está realmente visível. Às vezes, você precisa fazer ações extras em uma página para tornar o elemento visível. Por exemplo, abra um menu suspenso para que uma opção apareça ou abra o menu para o submenu aparecer
  • aguarde a visibilidade do elemento :

     var EC = protractor.ExpectedConditions; var mumbaiCity = element(by.id('mumbaiCity')); browser.wait(EC.visibilityOf(mumbaiCity), 5000); mumbaiCity.click(); 
  • existe um outro elemento com o mesmo id que é realmente invisível. Nesse caso, você precisa melhorar seu localizador para corresponder a esse elemento específico. Por exemplo:

     element(by.css(".city-checkbox #mumbaiCity")).click(); element(by.css(".city-checkbox input[ng-click*=Mumbai]")).click(); 
  • Ou, se você tiver vários elementos correspondentes ao mesmo localizador, poderá “filtrar” um elemento visível :

     var mumbaiCity = element.all(by.id('mumbaiCity')).filter(function (elm) { return elm.isDisplayed().then(function (isDisplayed) { return isDisplayed; }); }).first(); mumbaiCity.click(); 
  • mova para o elemento e clique em browser.actions() :

     var mumbaiCity = element(by.id('mumbaiCity')); browser.actions().mouseMove(mumbaiCity).click().perform(); 
  • role para a visualização do elemento e clique em:

     var mumbaiCity = element(by.id('mumbaiCity')); browser.executeScript("arguments[0].scrollIntoView();", mumbaiCity.getWebElement()); mumbaiCity.click(); 
  • clique via javascript (cuidado com as diferenças ):

     var mumbaiCity = element(by.id('mumbaiCity')); browser.executeScript("arguments[0].click();", mumbaiCity.getWebElement()); 
  • às vezes, você só precisa maximizar a janela do navegador :

     browser.driver.manage().window().maximize();