0
votes

Comment cliquer sur le bouton Désactiver puis sur le bouton Activer via Selenium et Java

Même bouton est utilisé pour activer et désactiver. Première fois où le bouton d'exécution du code cliqué et "désactivé" avec succès. Mais la seconde fois, le code ne peut pas trouver l'élément. Le premier bouton de cas est en deuxième étiquette 'A' puis désactivé le bouton Il est dans la première étiquette «A».

Case 1: P>

WebElement deactivatebutton = driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a[2]"));
//WebElement activatebutton = driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a"));


0 commentaires

6 Réponses :


0
votes

Vous pouvez exécuter le script Java Cliquez () sur le bouton Désactivé comme suit:

WebElement deactivatebutton = driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a[2]"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", deactivatebutton);


1 commentaires

Félicitations, vous venez de modifier votre test pour toujours passer même si le bouton ne peut jamais être activé et qu'un utilisateur final ne pourra jamais utiliser la page Web de la manière attendue. J'aimerais que les gens cessent d'atteindre le Javascriptecteur de frigoter leur chemin autour de chaque problème lorsque 9 fois sur 10, il n'est pas approprié



0
votes

Utilisez à la suite de CSSSelecteurs au lieu de XPaths:

pour activer BTN:

a [href * = '/ classdétails / activate']

pour le bouton de désactivation:

a [href * = '/ classdétails / désactivation']

N'oubliez pas que vous devez vérifier / gérer si activer / désactiver le bouton est présent ou ne pas cliquer sur eux.

J'espère que cela a aidé.


0 commentaires

1
votes

Ma solution sera de construire Simple Stratégies de localisation Basé sur les attributs disponibles :

  • Cliquez sur Désactiver LINK:

    • csselector : XXX

    • xpath : XXX

    • Cliquez sur Activer Link:

      • csselector : XXX

      • xpath : XXX


0 commentaires

0
votes

Comme il s'agit d'un lien, linktext localisateur peut également être utilisé

// to activate
driver.findElement(By.linkText("Activate")).click();
//to deactivate
driver.findElement(By.linkText("Deactivate")).click();


0 commentaires

0
votes

pas effacé mon problème. S'il vous plaît vérifier la pièce jointe. Va cliquer sur le bouton de désactivation

Après désactivé, encore une fois deuxième exécution de code, allez cliquer sur l'activation des données. Dans ce cas, une seule touche p>

J'écris pour écrire le code ci-dessous.That fonctionne bien. Mais je sais que ce n'est pas valide. J'ai besoin de désactiver et d'activer le même bouton dans deux exécutions différentes. P>

ESSAYER { P>

        boolean deactivatebutton = driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a[2]")).isDisplayed();
         WebElement dbutton = driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a[2]"));
            dbutton.click();
        }

     catch(Exception e) {
    boolean activatebuttonpresent =  driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a")).isEnabled();

          driver.findElement(By.xpath("//*[@id='tblClassName']/tbody/tr[2]/td[4]/a")).click();


0 commentaires

2
votes

Vous pouvez utiliser deux approches ici:

  1. Vous pouvez utiliser deux xpaths, chacun pour activer et désactiver le bouton à l'aide de leur texte comme:

    WebElement ActivateButton = pilote.FindElement (by.xpath ("// A [Texte () = 'Activer']"));
    WebElement de désactivatebutton = pilote.findElement (by.xpath ("// A [Texte () = 'Désactiver']"));

  2. Faites-la paramétrer en effectuant une méthode de clic et en envoyant le texte de votre bouton, cela sera plus utile car vous pouvez utiliser cette méthode pour tout bouton présent sur votre page Web (avec le même type de xpath) .

    élément de diffusion;
    ClickElement annulé public (String ElementEXT) {
    Element = pilote.findellement (by.xpath ("// A [Texte (Texte () =" + ElementText + "]"));
    élément.click ();
    }

    Appelez ensuite la méthode comme ClickElement ("Activer"); ou ClickElement ("Désactiver");


0 commentaires