Question

Utilisation de l'élément (par.model ()) Syntaxe pour trouver un champ de champ et d'entrée.

élément (par.model ('sample_ad.id')). SendKeys ('Batman');

Obtient l'exception de ChromeRiver:

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)

Je ne sais pas pourquoi cela se brise, mais le protacteur semble très fragile en ce moment ... Je n'ai aucune question à l'aide de l'objet du navigateur pour trouver des éléments, un texte d'entrée, etc.

Toute aide serait appréciée

Edit: Si je change la ligne ci-dessous, je suis capable d'interagir avec le champ de texte. browser.driver.findElement (protractor.id.id ('sample_ad_id')). SendKeys ('Batman');

Autres conseils

Espérons que cela aidera les autres ...

a trouvé cela sur github (voir lien de références).Le problème que je crois est un script qui ne revient pas, ainsi que les envois Sendkeys n'ont pas fonctionné.Avant d'interagir avec le DOM à l'aide d'objets de Protractor (élément, pTor, etc.), définissez cette variable:

browser.ignoresynchronisation= vrai;

La raison des œuvres suivantes est que cela ne s'appuie pas sur les appels ASYNC, son interagit simplement directement avec le DOM et insère les clés dans le champ de saisie. Browser.Driver.FindElement (Protractor.Id ('Sample_ad_ID'))). SendKeys ('Batman');

La raison que mon appel n'a pas fonctionné ( je pense que ) est parce qu'il y avait un appel ASYNC qui n'a pas revenu à temps.
élément (by.model ('sample_ad.id')). SendKeys ('Batman');

Références: https://github.com/angular/protractor/issues/325

On dirait que votre test est chronométré.Le délai d'attente par défaut pour le cutraceur est de 11 secondes.

Essayez de définir un délai différent pour ce test:

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

Vous pouvez également remplacer le délai d'attente pour tous vos tests dans le fichier de configuration du Protractor.Voir cet exemple de fichier de configuration:

https://github.com/andresdominguez/andresdominguez/Protractor-Meetup / blob / maître / 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);
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top