2016-09-01 30 views
0

我想關閉一個彈出窗口,它不允許我的代碼進一步執行。但我無法做到這一點。有一個彈出式窗口顯示'免費5券',它沒有關閉。如何關閉Selenium中的彈出窗口?

以下是我的代碼。請檢查並建議。

public class Alldetails { 
    WebDriver driver; 
    public List<String> links1 = new ArrayList<String>(); 

    @BeforeTest 
    public void beforeTest() { 
     System.setProperty("webdriver.chrome.driver", "C:\\Pankaj\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
     // driver = new FirefoxDriver(); 
     driver.manage().window().maximize(); 
    } 

    @Test 
    public void f() { 
     driver.get("http://www.debenhams.com/kids/t-shirts-tops/boys"); 
     driver.findElement(
       By.xpath(".//*[@id='dijit__WidgetsInTemplateMixin_0']/div/div[1]/button")) 
       .click(); 

     WebElement a = driver.findElement(By.className("products_count")); 
     String product_count = a.getText(); 
     Integer x = Integer.valueOf(product_count); 
     System.out.println(x); 
     for (int i = 1; i < (x/60) + 1; i++) { 
      driver.get("http://www.debenhams.com/kids/t-shirts-tops/boys" + "?pn=" + i); 

      List<WebElement> links = driver 
        .findElements(By.className("item_container").tagName("a")); 
      for (WebElement abcx : links) { 
       String ax = abcx.getAttribute("href"); 
       // if(!links1.contains(ax)) 
       links1.add(ax); 
      } 

      for (String b : links1) { 
       if (b.contains("/webapp/wcs/stores/servlet/prod")) 
        System.out.println(b); 
      } 
     } 
    } 

    @AfterTest 
    public void afterTest() { 
    } 
} 
+0

在這段代碼中彈出哪個動作?或者當出現彈出窗口?請更精心設計? –

+0

彈出窗口出現在下面的代碼行後面。 「driver.get( 「?PN =」 「http://www.debenhams.com/kids/t-shirts-tops/boys」 + + I); ' –

+0

什麼樣的彈出? JavaScript警報? HTML/CSS彈出?瀏覽器彈出? –

回答

0

你需要做這樣的事情:

Alert alert = driver.switchTo().alert(); 
// Prints text and closes alert 
System.out.println(alert.getText()); 
alert.accept(); 

alert.dismiss(); 

根據您的需要。

編輯

如果你的代碼出現的警告之前運行您可能會得到一個AlertNotPresentException。爲了避免可能添加這樣的延遲:

WebDriverWait wait = new WebDriverWait(driver, 15, 100) 
wait.until(ExpectedConditions.alertIsPresent()) 

這將使硒等待15秒每100毫秒檢查,如果警報出現。這段代碼不是我的,已經從這裏拿走:Selenium how to get the alert Alert message

+0

錯誤消息現在沒有出現,但在此之後應該打印的URL不存在。我編碼這個來獲取此頁面上的所有產品網址。 –

+0

錯誤什麼它拋出異常org.openqa.selenium.NoAlertPresentException:沒有警報打開 –

+0

我編輯了我的答案 – Aurasphere