Nightwatch ne peut pas localiser l'élément via css id ou des sélecteurs de classe

Nous utilisons Nightwatch d'automatiser une partie de notre INTERFACE utilisateur de test. Certains tests sont plutôt fragiles, surtout d'avoir à faire avec bizarre sélecteurs CSS, et je vais essayer de les simplifier. Mais certains de la simple sélecteurs CSS que je m'attends à du travail sont, ainsi, pas.

J'essaie de trouver ce profondément imbriqués <a> tag:

<a class="btn btn-quote btn-crm" href="/crm/" id="btnEndSession" style="display: inline-block;">End Session</a>

Voici un peu de code qui fonctionne:

.waitForElementVisible('#quoteSummary > div > div > div > div > a:nth-child(2)', 1000)
.click('#quoteSummary > div > div > div > div > a:nth-child(2)')

Mais c'est un méchant sélecteur CSS, et j'aimerais le remplacer par ceci:

.waitForElementVisible('#btnEndSession', 1000)
.click('#btnEndSession')

Comme le <a> élément, je suis intéressé en a, en fait, l'id de btnEndSession, il semble que cela devrait fonctionner. Mais il n'a pas d': nightwatch erreurs avec l'un de ses "dépassé pendant l'attente de l'élément <#btnEndSession> pour être visible pour 10 000 millisecondes" des messages.

J'ai aussi essayé:

.waitForElementVisible('.btn-crm', 10000)
.waitForElementVisible('a[id=btnEndSession]', 10000)
.waitForElementVisible('a#btnEndSession', 10000)

Mais ceux-ci ne fonctionne pas non plus. Aucune idée de pourquoi ces plus simple, les sélecteurs ne sont pas de la cueillette de l'élément?

EDIT:

OK, assez bizarrement, cela a fonctionné:

.waitForElementVisible('a.btn-crm', 1000)

Cependant, dans le même essai, à la recherche de cet élément:

<select class="custom-form-control crm-result-visit select-hidden" id="crm-result-visit" name="crmResultVisit">
    <option value=" ">Select</option>
    <option value="Not Home">Not Home</option>
</select>

L'ensemble de ces différents sélecteurs ne parviennent pas à trouver l'élément:

.waitForElementVisible('select.crm-result-visit', 10000)
.waitForElementVisible('select#crm-result-visit', 10000)
.waitForElementVisible('#crm-result-visit', 10000)
.waitForElementVisible('.crm-result-visit', 10000)
.waitForElementVisible('select[id=crm-result-visit]', 10000)

Je suis un peu à contrecœur conduit à la conclusion que le sélecteur CSS de soutien dans nightwatch est assez buggé.

FWIW, nous utilisons la version 0.6.7 de nightwatch.

Ne a#btnEndSession travail? Jamais utilisé Nightwatch.js mais je suis enclin à penser que c'est buggé.
Grande question. Malheureusement, cette syntaxe échoue également, dans mon cas de test ci-dessus.
Ce qui rend ce si intéressant est la nature du message d'erreur - il suggère que le sélecteur CSS de l'analyseur de parser les sélecteurs très bien, c'est ce qu'il fait avec les sélecteurs/éléments qui.
Pour ce que sa valeur, nous avons finalement abandonné Nightwatch: trop de questions de ce genre, sans résolution. Nous avons commencé à utiliser le Sélénium directement par le biais de ses C# liaisons, et qui fonctionne bien mieux.
Juste pensé que je le carillon - Nightwatch a long chemin depuis 0.6.x et je n'ai pas de problèmes lors de l'appel à l'aide de l'id ou des sélecteurs de classe dans le mentionné ci-dessus façons. Bien la peine de vérifier si vous regardiez dans TA 🙂

OriginalL'auteur Ken Smith | 2015-05-05