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

时间:2013-10-30 21:53:38

标签: selenium popup

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

  1. 转到http://www.lampsplus.com
  2. 点击标题部分中的“销售”链接。
  3. 单击页面上显示的第1项/产品。 (这将显示产品页面。)
  4. 在产品页面上,单击红色的“添加到购物车”按钮。 (这会将产品添加到购物车并显示弹出窗口。)
  5. 在弹出窗口中,单击深灰色的“继续购物”按钮。 (这将关闭弹出窗口。)
  6. 我坚持第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
    

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

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

1 个答案:

答案 0 :(得分:5)

元素aContinueShopping包含在iframe中。

您必须使用以下方式切换到iframe:

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

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

完成iframe后,您将使用以下命令切换回“顶部”:

d1.SwitchTo().DefaultContent();