Je suis automatisé à l'aide du pilote Web Selenium avec Java. Mon script est écrit pour détecter un message de fenêtre "Duplicated Record Created '" qui ne s'approche que lorsque nous essayons d'ajouter un "enregistrement en double".
si la "fenêtre d'enregistrement en double" apparaît alors mon script fonctionne absolument bien. Cependant, lorsque la "fenêtre détectée en double" n'apparaît pas, mon script attend (continue à rechercher l'élément) pendant une longue période de temps avant d'avoir échoué. (Heure approximative mon script attend est de 10 à 15 minutes). P>
Je veux réduire ce temps et que je souhaite que mon script "échoue", si l'élément n'est pas trouvé. P>
Veuillez noter : Je n'ai appliqué aucun "explicite" ou "implicite" attendre dans mon code. P>
4 Réponses :
heure approximative Mon script attend de 10 à 15 minutes em> sa semble que vous avez appliqué une attente implicite / explicite de manière inappropriée. Ici, vous allez avec la solution; Premier changement isdisplay () code> fonction fonctionne lorsque votre élément présent dans DOM en état caché ou visible. Si l'élément ne présente pas, alors évidemment une erreur est NosuchelementException code>. P> Webelement title_duplicaterecordsDétecteté code> à Liste
Le meilleur moyen serait si vous utilisez une attente explicite comme parfois en raison d'une charge importante sur le réseau, le message peut apparaître un peu plus tard. Une attente explicite fournit également des fonctionnalités de timeout qui vous aideront à réduire le temps d'exécution de votre script. P>
toujours définir une attente implicite. Il est impossible d'attendre plus de 1 minute compte tenu de l'expérience utilisateur et des performances de l'utilisateur.
public boolean isElementWithXPathExist(String theXpath) {
try {
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(theXpath))));
}catch(NoSuchElementException e) {
return false;
}catch(TimeoutException eT) {
return false;
}
return true;
}
Merci beaucoup pour votre réponse active à tous.
J'ai trouvé la solution. Ici, c'est, P>
public boolean verifyContactCreation() throws InterruptedException
{
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
if(!driver.findElements(By.xpath("//button[@aria-label='Assign']")).isEmpty())
{
return true;
}
else
{
return false;
}
}
Voici mon code: Public Boolean Contact_Dupliqué () lance interrompteException {return title_duplicaterecordsdétecteté.isdisplayed (); } Void public Verify_Create_Contact_duplicate_detection_tesCase () {ASSERT.ASSERTTRUE (Contact_dupliqué ()); }