2013-10-30 71 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()來回到正確的框架。 –

相關問題