La risposta selezionata non ha funzionato come previsto (err.state
era undefined
e NoSuchElementError
era sempre gettato) - anche se l'idea di utilizzare i callback opzionali funziona ancora.
Dal momento che stavo ottenendo lo stesso errore dell'OP fa riferimento, credo che NoSuchElementError
dovrebbe essere referenziato quando si determina se l'elemento mirato esiste o meno. Come suggerisce il nome è l'errore che viene generato quando un elemento non esiste. Quindi la condizione nel errorCallback dovrebbe essere:
err instanceof webdriver.error.NoSuchElementError
Quindi il blocco di codice completo potrebbe essere il seguente (ho anche sto usando async
/await
per coloro che approfittando di che sintassi):
var existed = await driver.findElement(webdriver.By.id('test')).then(function() {
return true;//it existed
}, function(err) {
if (err instanceof webdriver.error.NoSuchElementError) {
return false;//it was not found
} else {
webdriver.promise.rejected(err);
}
});
//handle value of existed appropriately here
fonte
2017-07-24 05:22:57
Non puoi usare questo: if (webdriver.By.id ('test')) {driver.findElement (webdriver.By.id ('test')); }. – JeffreyZ
findElements() e size() – epascarello
@ user2389688 webdriver.by.id ("qualsiasi cosa") sembra sempre risultare vero. –