2012-05-14 64 views

回答

2

從WebDriver FAQ:WebDriver提供了處理多個窗口的能力。這是通過使用「WebDriver.switchTo()。window()」方法切換到具有已知名稱的窗口完成的。如果名稱未知,可以使用「WebDriver.getWindowHandles()」獲取已知窗口的列表。您可以將句柄傳遞給「switchTo()。window()」。

Full FAQ here。

Example從ThoughtWorks的

String parentWindowHandle = browser.getWindowHandle(); // save the current window handle. 
     WebDriver popup = null; 
     Iterator<String> windowIterator = browser.getWindowHandles(); 
     while(windowIterator.hasNext()) { 
     String windowHandle = windowIterator.next(); 
     popup = browser.switchTo().window(windowHandle); 
     if (popup.getTitle().equals("Google") { 
      break; 
     } 
     } 

下面是從Java轉換成C#的示例(與棄用方法替換)

 String parentWindowHandle = _browser.CurrentWindowHandle; // save the current window handle. 
     IWebDriver popup = null; 
     var windowIterator = _browser.WindowHandles; 

     foreach (var windowHandle in windowIterator) 
     { 
      popup = _browser.SwitchTo().Window(windowHandle); 

      if (popup.Title == "Google") 
      { 
       break; 
      } 
     } 
2

否,不存在 - 至少不本身。

WebDriver只與網頁交互。彈出對話框一旦實例化,就成爲操作系統的域而不是網頁。

您可以通過發出帶有正在檢索或發送到服務器的內容的POST或GET來繞過文件下載/上載對話框。

您可以使用諸如AutoIt或Windows自動化API之類的工具與其他對話窗口進行交互。

3

對於一個彈出窗口的對話框,您可以使用警報追趕:

IAlert alert = driver.SwitchTo().Alert(); 
alert.Accept();