2017-09-07 4 views
0

J'essaie de créer des tests de sélénium qui exécutent chaque étape de manière synchrone, sans utiliser .then() ou async/await. La raison en est que je veux créer un ensemble de fonctions qui permettent à peu près n'importe qui dans notre équipe de test, presque indépendamment des compétences techniques pour écrire des tests automatisés faciles à lire. Il me semble que webdriver-sync devrait me donner exactement ce que je veux. Cependant, le code suivant est fictif des problèmes de production:webdriver-sync fonctionnant de manière asynchrone?

var wd = require('webdriver-sync'); 
var By = wd.By; 
var Chromedriver = wd.Chromedriver; 
var driver = new Chromedriver; 
driver.get('https://my.test.url'); 
var myButton = driver.findElement(By.cssSelector('[id*=CLICK_ME]')); 
myButton.click(); 

Il essaie d'exécuter - navigateur est lancé et la page commence à charger ... mais les étapes ne sont pas exécutées de manière synchrone - il passe et essaie de trouver et cliquez sur "myButton" avant que la page a fini de charger, en jetant une erreur "no such element" ... ce qui me fait un peu défaire le point de webdriver-sync?! Quelqu'un peut-il me dire où je vais mal?

FWIW, je WebDriver-synchronisation 1.0.0, noeud v7.10.0, java 1.8.0_74, tous en cours d'exécution sur CentOS 7.

Merci à l'avance!

+0

Avez-vous la même erreur avec le pilote firefox? –

+0

Vraiment besoin de ce travail avec Chrome, mais néanmoins j'ai juste essayé de passer à FF. En utilisant les instructions sur github.com/jsdevel/webdriver-sync pour instancier le pilote FF, j'obtiens: "Le chemin vers le pilote exécutable doit être défini par la propriété système webdriver.gecko.driver" - mais je ne vois pas comment définir cela avec node.js? – r51

+0

la seule fois que j'ai utilisé webdriver selenium avec nodejs j'ai utilisé webdriver.io et cela a bien fonctionné. –

Répondre

1

Vous devez placer des guillemets autour de "CLICK_ME" car il s'agit d'une valeur de chaîne.

Généralement, cependant, c'est une bonne idée d'attendre des éléments spécifiques car les pages dynamiques sont souvent "prêtes" avant que tous leurs éléments aient été créés.