2013-03-24 109 views
1

我想取消在Firefox彈出下載窗口與硒。我可以切換窗口並關閉警報窗口,但似乎無法選擇下載窗口。有任何想法嗎?硒的網絡驅動程序取消火狐下載

環顧四周,看來Selenium RC無法處理下載窗口,因爲它們依賴於操作系統。但是,Selenium Web Driver的這個問題是否一樣?我知道這個解決方案可以使用autoit來完成,但如果可能的話,我想保留在Java硒中。謝謝。

回答

2

WebDriver無法直接與對話框窗口交互,這是因爲對話框窗口是操作系統的域而不是網頁。然而其可能使用的名稱空間System.Windows.Forms的的 SendKeys類方法SendWait()對話框窗口

using System.Windows.Forms; 

在低於PLUpload按鈕示例代碼被壓做動作,這將打開一個Windows對話框來選擇要上傳的文件。

寫下面幾行來將鍵值發送到顯示的對話窗口。

SendKeys.SendWait(@"C:\Users\Public\Pictures\Sample Pictures\Dock.jpg"); 
SendKeys.SendWait(@"{Enter}"); 

在C#SendKeys類的詳細參考可在http://msdn.microsoft.com/en-au/library/system.windows.forms.sendkeys.aspx

using System; 
using System.Windows.Forms; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Support; 
using OpenQA.Selenium.Interactions; 
using NUnit.Framework; 
namespace BusinessCreation 
{ 
    class PlUpload 
    { 
     static void Main(string[] args) 
     { 
      IWebDriver driver = new FirefoxDriver(); 
      driver.Navigate().GoToUrl("http://www.plupload.com/example_queuewidget.php"); 
     driver.FindElement(By.XPath("//object[@data='/plupload/js/plupload.flash.swf']")).Click(); 
      SendKeys.SendWait(@"C:\Users\Public\Pictures\Sample Pictures\Dock.jpg"); 
      SendKeys.SendWait(@"{Enter}"); 
     } 
    } 
} 
可以找到