Pergunta

usando a sintaxe element(by.model()) para encontrar um campo e inserir texto.

element(by.model('sample_ad.id')).sendKeys('batman');

obtém a exceção do chromedriver:

Stacktrace:
     Error: Timed out waiting for Protractor to synchronize with the page after 11 seconds
    at Error (<anonymous>)
==== async task ====
WebDriver.executeScript()
    at Protractor.waitForAngular (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:278:22)
    at Protractor.findElement (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:427:8)
    at Object.elementFinder.(anonymous function) [as sendKeys] (/Users/jon/dev/project_name/node_modules/protractor/lib/protractor.js:62:21)
    at null.<anonymous> (/Users/jon/dev/project_name/test/e2e/features/somedirectiveSpec.js:24:39)
    at /Users/jon/dev/project_name/node_modules/protractor/jasminewd/index.js:54:12
==== async task ====
    at null.<anonymous> (/Users/jon/dev/project_name/node_modules/protractor/jasminewd/index.js:53:12)
    at null.<anonymous> (/Users/jon/dev/project_name/node_modules/protractor/node_modules/minijasminenode/lib/async-callback.js:45:37)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

Não sei por que isso está quebrando, mas o Transferidor parece muito frágil agora... Não tenho problemas ao usar o objeto do navegador para encontrar elementos, inserir texto, etc.

Qualquer ajuda seria apreciada

EDITAR:se eu alterar a linha para o seguinte, poderei interagir com o campo de texto.navegador.driver.findElement(transferidor.By.id('sample_ad_id')).sendKeys('batman');

Outras dicas

espero que isso ajude os outros ....

Encontrei isso no github (veja o link de referências).Acredito que o problema seja um script que não retorna, portanto os sendKeys não funcionaram.Antes de interagir com o dom usando objetos transferidores (element, ptor, etc), defina esta variável:

navegador.ignoreSynchronization=true;

A razão pela qual o seguinte funciona é porque ele não depende de chamadas assíncronas, apenas interage diretamente com o dom e insere as chaves no campo de entrada.navegador.driver.findElement(transferidor.By.id('sample_ad_id')).sendKeys('batman');

O motivo pelo qual minha ligação não funcionou (Eu acredito) é porque houve uma chamada assíncrona que não retornou a tempo.
element(by.model('sample_ad.id')).sendKeys('batman');

referências:https://github.com/angular/protractor/issues/325

Parece que seu teste está expirando.O tempo limite padrão para o transferidor é de 11 segundos.

Tente definir um tempo limite diferente para este teste:

it('should override timeout', function() {
  // Timeout of 30 seconds.
  element(by.model('sample_ad.id')).sendKeys('batman');
}, 30000)

Você também pode substituir o tempo limite de todos os seus testes no arquivo de configuração do transferidor.Veja este exemplo de arquivo de configuração:

https://github.com/andresdominguez/protractor-meetup/blob/master/protractor-config.js#L19

// Inside the protractor config file.
onPrepare: function() {
  // Override the timeout for webdriver.
  var ptor = protractor.getInstance();
  ptor.driver.manage().timeouts().setScriptTimeout(60000);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top