Quindi sto utilizzando l'implementazione JavaScript di Selenium, WebDriverJS. Come con qualsiasi automazione del browser Web, il più grande ostacolo è far rallentare il codice abbastanza a lungo da caricare gli elementi della pagina. La mia soluzione è questa:Come rilevare gli errori di selenio utilizzando WebDriverJS
per ogni elemento che voglio interagire con Ho un blocco di codice come questo
xpath = "//div[@id='gs_lc0']/input[@id='gbqfq']"
driver.wait(function(){
return waitForElement(xPath,driver);
});
try{
element = driver.findElement(webdriver.By.xpath(xPath));
}catch(e){
console.log("Wait Function False Positive")
}
element.sendKeys("Let Me Google That For You\n";
con questo come la funzione ripete nella funzione di attesa
var waitForElement = function(path, driver){
console.log("try: " + path)
try{
driver.findElement(webdriver.By.xpath(path));
}catch (e){
console.log("FAILURE")
return false;
}
console.log("SUCCESS")
return true;
}
ora questo il codice funzionerà a volte ma altre volte no. Suppongo che la funzione di attesa non funzioni affatto e sto solo ricevendo dei tempi di caricamento della pagina web fortunati. Quindi per testare questa teoria ho aggiunto la funzione try al blocco di codice che non riesco nemmeno a catturare "NoSuchElementError". Quindi il peso della mia domanda è se c'è un altro modo per formare la funzione tryCatch in modo da catturare questi errori.
Anche qui è ciò che la testa del mio codice è simile, se vuole una riproduzione completa
var webdriver = require('selenium-webdriver'), element
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('google.com');
Grazie mille per la tua risposta. La soluzione per la gestione degli errori era proprio ciò di cui avevo bisogno. – Arcv2
Qual è lo scopo del null nell'istruzione then? – Arcv2
Il primo argomento di "then" sarebbe normalmente il callback che viene chiamato se la promessa si risolve correttamente. Dal momento che la dimostrazione di cui sopra non può avere successo, non ha senso avere una richiamata lì. Pertanto, viene utilizzato 'null'. Funzionerebbe altrettanto bene con 'function() {}'. – Louis