Usiamo Nightwatch per automatizzare alcuni dei nostri test dell'interfaccia utente. Alcuni dei test attuali sono piuttosto fragili, per lo più dovuti a strani selettori CSS, e sto cercando di semplificarli. Ma alcuni dei semplici selettori CSS che mi aspetterei di lavorare sono, beh, no.Nightwatch non riesce a individuare l'elemento tramite ID css o selettori di classe
Sto cercando di trovare questo nidificazione <a>
tag:
<a class="btn btn-quote btn-crm" href="/crm/" id="btnEndSession" style="display: inline-block;">End Session</a>
Ecco un po 'di codice che sta lavorando:
.waitForElementVisible('#quoteSummary > div > div > div > div > a:nth-child(2)', 1000)
.click('#quoteSummary > div > div > div > div > a:nth-child(2)')
Ma questo è un selettore CSS brutto, e mi piacerebbe per sostituirlo con questo:
.waitForElementVisible('#btnEndSession', 1000)
.click('#btnEndSession')
Come il <a>
el E mi interessa avere in effetti l'id di btnEndSession
, sembra che dovrebbe funzionare. Ma non è così: errori di nightwatch con uno dei suoi "Timeout in attesa dell'elemento < #btnEndSession> da visualizzare per messaggi di 10000 millisecondi".
Ho anche provato:
.waitForElementVisible('.btn-crm', 10000)
.waitForElementVisible('a[id=btnEndSession]', 10000)
.waitForElementVisible('a#btnEndSession', 10000)
Ma quelli non funzionano neanche. Qualche idea sul perché questi selettori più semplici non stiano raccogliendo l'elemento?
EDIT:
OK, abbastanza stranamente, questo ha funzionato:
.waitForElementVisible('a.btn-crm', 1000)
Tuttavia, nello stesso test, alla ricerca di questo elemento:
<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>
Tutti questi diversi selettori falliscono per trovare l'elemento:
.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)
Sono un po 'riluttante a concludere che il supporto del selettore CSS in Nightwatch è piuttosto buggato.
FWIW, stiamo usando la versione 0.6.7 di Nightwatch.
fa 'un'opera # btnEndSession'?Non ho mai usato Nightwatch.js ma sono incline a pensare che sia anche buggy. – BoltClock
Ottima domanda. Sfortunatamente, anche questa sintassi fallisce, in entrambi i miei casi di test sopra. –
Ciò che rende questo così intrigante è la natura del messaggio di errore - suggerisce che il parser del selettore CSS sta analizzando i selettori bene, è ciò che sta facendo con i selettori/elementi disattivati. – BoltClock