Ho una pagina Web con due menu a discesa. La selezione di un'opzione in un menu a discesa aggiornerà l'elenco di opzioni nell'altro menu a discesa tramite uno script attivato dall'evento di sfocatura. L'evento sfocatura viene attivato quando lo stato attivo si allontana dal primo menu a discesa. Tutto funziona bene quando si naviga la pagina manualmente.Le azioni tramite WebDriver non attivano l'evento sfocatura
Tuttavia, quando si eseguono gli stessi passaggi tramite WebDriver, l'evento sfocatura non viene mai attivato e il menu a discesa non viene quindi mai aggiornato, causando il fallimento dello script.
Ecco il codice HTML per la discesa seleziono prima (e che ha lo script onblur collegato ad esso:
<select id="newOrder:shipToAddressType" class="fieldRequired" onblur="PrimeFaces.ab({source:this,event:'blur',process:'newOrder:odShipData',update:'newO>rder:odShipData',partialSubmit:true,oncomplete:function(xhr,status,args)>{focusOnShipToZip();;}}, arguments[1]);" tabindex="47" size="1" name="newOrder:shipToAddressType">
<option selected="selected" value="125">Domestic</option>
<option value="126">International</option>
<option value="127">Military</option>
</select>
Ecco quello che ho provato finora:
Navigazione pagina come ho manualmente Faccio la selezione nel menu a discesa, quindi inserisco il testo in un altro campo per spostare l'attenzione lontano dal menu a discesa per attivare l'evento sfocatura.Questo non ha funzionato.Ho anche provato a fare tabulazioni dal menu a discesa, anche no fortuna
Esecuzione javascript per attivare l'evento sfocatura So che il javascript è corretto, dal momento che posso eseguirlo correttamente da firebug: attiva un aggiornamento del secondo menu a discesa. Tuttavia, da WebDriver non sembra attivare nulla.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('newOrder:shipToAddressType').blur()");
Qualche suggerimento? Grazie per l'aiuto.
Modifica: Ho provato ad aggiungere "ritorno" alla stringa di script. Inoltre non ha funzionato:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");
Grazie per l'input. Avevo già provato il tabbing (vedi il mio post originale), ma non avevo ancora provato ad aggiungere il reso. Darà questo andare. Grazie. – user973718
Aggiunto 'return' alla mia stringa javascript. Nessuna modifica: nessun evento di sfocatura attivato. Aggiunto questo all'OP – user973718
Nel tuo javascript, assicurati che l'elemento WebDriver ti venga restituito rimuovendo il '.blur()'. La tua variabile 'js' dovrebbe contenere un elemento WebDriver. Se non lo è, è per questo che la sfocatura non funziona ... non riesce a trovare l'elemento correttamente! Se lo è, andremo avanti da lì. – bbbco