Abbiamo incontrato qualcosa di simile di recente.
Quello che ci ha aiutato è stato quello di attesa per un elemento di avere un valore CSS specifico utilizzando browser.wait()
:
function waitForCssValue (elementFinder, cssProperty, cssValue) {
return function() {
return elementFinder.getCssValue(cssProperty).then(function (actualValue) {
return actualValue === cssValue;
});
};
};
Usage:
browser.wait(waitForCssValue(obj, 'color', color2), 5000);
Qui, siamo fondamentalmente in attesa fino a 5 secondi per un valore CSS color
uguale a color2
. Applica la chiamata di attesa subito dopo il passaggio del mouse sull'elemento.
Inoltre, mi ricordo di avere quella scorrimento in vista aiutato a risolvere i problemi simili su SO:
browser.executeScript("arguments[0].scrollIntoView();", obj);
finestra del browser Massimizzare può anche aiutare, di solito facciamo in onPrepare()
:
onPrepare: function() {
browser.driver.manage().window().maximize();
},
Nota aggiuntiva su PhantomJS
:
Prima di tutto, gli sviluppatori goniometro consigliabile evitare di eseguire protrator
test end-to-end con PhantomJS
:
Nota: Si consiglia di non utilizzare PhantomJS per le prove con goniometro. Ci sono molti problemi segnalati con PhantomJS che si interrompe e si comporta in modo diverso dai browser reali.
A parte questo, si veda:
Qui sto cercando di arrivare al punto, che si dovrebbe sacrificare il "non riesce a Phantom JS" argomento.
Questa pagina non utilizza nessuno Angolare –
Ok ... si potrebbe quindi utilizzare la prima soluzione o integrare '.monmouseover' e' .onmouseout' nella funzione corrente invece di '.mouseMove' ... in qualsiasi modo questo problema sembra essere noto per il goniometro https://github.com/angular/protractor/issues/159 – intika
Giusto, ma ciò richiederebbe a JS di fare tutto ciò che fa il CSS, che è un non-iniziatore –