如何使用带有Java的selenium webdriver处理弹出窗口

Art*_*tem 3 selenium popup

请帮忙,我是Selenium的新人.我尝试自动化电子商务网站,我有问题处理弹出窗口.这是场景:

  1. 转到http://www.lampsplus.com
  2. 单击标题部分中的"销售"链接.
  3. 单击页面上显示的第1项/产品.(这将显示产品页面).
  4. 在产品页面上,单击红色的"添加到购物车"按钮.(这会将产品添加到购物车并显示弹出窗口).
  5. 在弹出窗口中,单击深灰色的"继续购物"按钮.(这将关闭弹出窗口.)

我坚持第5步(错误信息:无法找到元素"继续购物按钮")这是我在第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
Run Code Online (Sandbox Code Playgroud)

我知道.getWindowHandle(); 方法.我尝试了几种不同的方法,但都没有.任何人都可以给我一个如何处理它的想法.非常感谢!我用的是Java.

注意:我不为LampsPlus工作而不尝试推广他们的产品,本网站仅用于培训目的.

Ric*_*ard 5

该元素aContinueShopping包含在iframe中.

你必须使用以下方法切换到iframe:

WebElement frameID = d1.findElement(By.Css("#add-to-cart>iframe"));
d1.SwitchTo().Frame(frameID);
d1.findElement(By.id("aContinueShopping")).click();
Run Code Online (Sandbox Code Playgroud)

iframe上没有'name'或'id',因此您必须使用WebElement或数字来查找它.

完成iframe后,您将使用以下命令切换回"top":

d1.SwitchTo().DefaultContent();
Run Code Online (Sandbox Code Playgroud)