Comment gérer la fenêtre contextuelle en utilisant selenium webdriver avec Java
Aidez-moi, je suis nouveau dans Selenium. J'essaie d'automatiser le site Web de commerce électronique et j'ai du mal à gérer la fenêtre contextuelle. Voici le scénario:
- Aller à http://www.lampsplus.com
- Cliquez sur le lien de vente dans la section d'en-tête.
- Cliquez sur le 1er article/produit affiché sur la page. (Cela montrera la page du produit).
- Sur la page du produit, cliquez sur le bouton rouge Ajouter au panier. (Cela ajoutera un produit au panier et affichera une fenêtre contextuelle).
- Sur le popup, cliquez sur le gris foncé Continuer les achats bouton. (Pour fermer la fenêtre contextuelle.)
Je suis resté bloqué à l'étape 5 (Message d'erreur: Impossible de localiser l'élément " Continuer les achats") Voici mon code avant l'étape 5:
WebDriver d1 = new FirefoxDriver();
d1.manage().window().maximize();
d1.get("http://www.lampsplus.com");
d1.findElement(By.name("hdr_sale")).click();
d1.findElement(By.xpath(".//*[@id='sortResultContainer60238']/a[2]/span")).click();
d1.findElement(By.id("pdAddToCart")).click(); //This is step 4
//Here is suppose to be some code which handles the popup - my problem
d1.findElement(By.id("aContinueShopping")).click(); //This is step 5
Je suis au courant .La méthode getWindowHandle ();. J'en ai essayé plusieurs variantes et aucune n'a fonctionné. Quelqu'un peut-il me donner une idée de la façon de le gérer. Merci beaucoup! J'utilise Java.
Remarque: Je ne travaille pas pour LampsPlus et n'essaie pas de promouvoir leurs produits, ceci le site Web a été choisi uniquement à des fins de formation.
1 answers
, L'élément aContinueShopping
est contenu dans une iframe.
Vous devrez passer à l'iframe en utilisant:
WebElement frameID = d1.findElement(By.Css("#add-to-cart>iframe"));
d1.SwitchTo().Frame(frameID);
d1.findElement(By.id("aContinueShopping")).click();
Il n'y a pas de " nom " ou " id " sur l'iframe, vous devrez donc utiliser un WebElement ou un numérique pour le trouver.
Une fois que vous avez terminé avec cet iframe, vous revenez à ' top ' en utilisant:
d1.SwitchTo().DefaultContent();