2013-10-30 35 views
3

请帮助,我是新的硒。我试图自动化电子商务网站,我有问题处理弹出窗口。下面是这种情况:如何处理使用硒webdriver与Java的弹出窗口

  1. 转到http://www.lampsplus.com
  2. 点击标题部分销售环节。
  3. 点击页面上显示的第一个项目/产品。 (这将显示产品页面)。
  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 

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

注:我不为LampsPlus工作,也不尝试宣传他们的产品,本网站仅作为培训用途。

回答

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,所以你必须使用一个WebElement或数字来找到它。

一旦你与该iframe做,你会通​​过切换到“顶”:

d1.SwitchTo().DefaultContent(); 
+0

太好了!有用!你是天才!非常感谢和万圣节快乐! – Artem

+0

@Artem自运行以来,您应该点击此答案旁边的复选标记以表明您已接受它。 –

+0

也感谢我和+1。我留下了一个框架来到一个弹出式窗口,我无法弄清楚为什么当我返回时页面已经死了。 _iframe_注意到我需要做一个switch_to_frame()来回到正确的框架。 –

相关问题