0
votes

Mon script de Selenium Automation continue à rechercher l'élément, si ce n'est pas trouvé sur la page. Comment puis-je résoudre ce problème

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).

Je veux réduire ce temps et que je souhaite que mon script "échoue", si l'élément n'est pas trouvé.

Veuillez noter : Je n'ai appliqué aucun "explicite" ou "implicite" attendre dans mon code. xxx


1 commentaires

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é ()); }


4 Réponses :


0
votes

heure approximative Mon script attend de 10 à 15 minutes sa semble que vous avez appliqué une attente implicite / explicite de manière inappropriée.

isdisplay () 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 .

Ici, vous allez avec la solution; Premier changement Webelement title_duplicaterecordsDétecteté à Liste title_duplicaterecordsDétecteté dans votre page objet puis apporter la fonction comme ci-dessous: xxx


0 commentaires

0
votes

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.


0 commentaires

0
votes

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;
    }


0 commentaires

0
votes

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;

    }


}


0 commentaires