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"));
6 Réponses :
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);
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é
Utilisez à la suite de CSSSelecteurs au lieu de XPaths: P>
a [href * = '/ classdétails / activate'] p>
blockQuote>
a [href * = '/ classdétails / désactivation'] p>
blockQuote>
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. P>
J'espère que cela a aidé. P>
Ma solution sera de construire Simple Stratégies de localisation Basé sur les attributs disponibles em>: Cliquez sur Désactiver STROND> LINK: P>
csselector em>: p>
xpath em>: p>
Cliquez sur Activer Strort> Link: P>
csselector em>: p>
xpath em>: p>
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();
pas effacé mon problème. S'il vous plaît vérifier la pièce jointe. Va cliquer sur le bouton de désactivation
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();
Vous pouvez utiliser deux approches ici: P>
Vous pouvez utiliser deux xpaths, chacun pour activer et désactiver le bouton à l'aide de leur texte comme: p>
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) . p>
Appelez ensuite la méthode comme WebElement ActivateButton = pilote.FindElement (by.xpath ("// A [Texte () = 'Activer']"));
WebElement de désactivatebutton = pilote.findElement (by.xpath ("// A [Texte () = 'Désactiver']")); Code> P> L>
élément de diffusion;
ClickElement annulé public (String ElementEXT) {
Element = pilote.findellement (by.xpath ("// A [Texte (Texte () =" + ElementText + "]"));
élément.click ();
} code> p> li>
ol>
ClickElement ("Activer"); CODE> ou
ClickElement ("Désactiver"); Code> P>