Il selenio non attenderà il caricamento di AJAX. Attende automaticamente il caricamento della pagina. Per attendere il caricamento del tipo AJAX devi utilizzare l'attesa implicita ed esplicita.
È possibile utilizzare Attendi impliciti ed Attendi espliciti per attendere un elemento Web particolare finché non viene visualizzato nella pagina. Il periodo di attesa che puoi definire dipende dall'applicazione.
Attendere esplicito:
Un attese esplicite è il codice si definisce di aspettare per una certa condizione che si verifichi prima di procedere ulteriormente nel codice. Se la condizione raggiunta, terminerà l'attesa e proseguirà con le ulteriori fasi.
Codice:
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(strEdit)));
O
WebElement myDynamicElement = (new WebDriverWait(driver, 30))
.until(new ExpectedCondition<WebElement>(){
@Override
public WebElement apply(WebDriver d) {
return d.findElement(By.id("myDynamicElement"));
}});
Questa attende fino a 30 secondi prima di lanciare un TimeoutException o se trova l'elemento tornerà in 0 - 30 secondi. WebDriverWait di default chiama la ExpectedCondition ogni 500 millisecondi finché non ritorna correttamente. Un risultato positivo per il tipo ExpectedCondition è Boolean return true o non null valore di ritorno per tutti gli altri tipi di ExpectedCondition.
È possibile utilizzare la classe ExpectedConditions come necessario per l'applicazione.
Attendere implicito:
un'attesa implicita è quella di dire WebDriver interroga il DOM per un certo periodo di tempo quando si cerca di trovare un elemento o gli elementi se non sono immediatamente disponibili
Codice :
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
una cosa da tenere a mente è che una volta che l'attesa implicita è impostata - rimarrà per la vita del obj WebDriver ect esempio
Per maggiori informazioni utilizza questo link http://seleniumhq.org/docs/04_webdriver_advanced.jsp
You can use these waits during your AJAX loading.
Spero che questo sarà utile.
È possibile utilizzare l'attesa implicita del selenio e l'attesa esplicita. – Manigandan
@Manigandan Che cos'è l'attesa implicita e Expilicit attendere? –