Selenium Web驱动程序取消Firefox下载

时间:2013-03-24 00:52:42

标签: firefox selenium webdriver

我正在尝试使用selenium取消Firefox中的弹出下载窗口。我可以切换窗口并关闭警报窗口,但我似乎无法选择下载窗口。有什么想法吗?

环顾四周,似乎Selenium RC无法处理下载窗口,因为它们依赖于操作系统。但是,Selenium Web Driver的问题是否相同?我知道可以使用autoit来解决这个问题,但是如果可能的话,我想将它全部保存在Java selenium中。感谢。

1 个答案:

答案 0 :(得分:2)

WebDriver无法直接与对话框窗口交互,这是因为对话框窗口是操作系统的域而不是网页。但是可以使用对话窗口执行操作 SendKeys类方法SendWait()的名称空间System.Windows.Forms

using System.Windows.Forms;

在下面的示例代码中,按下PLUpload按钮,打开Windows对话框以选择要上载的文件。

写入以下行以将键值发送到显示的对话框窗口。

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

可以在http://msdn.microsoft.com/en-au/library/system.windows.forms.sendkeys.aspx

中找到C#中SendKeys类的详细参考
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}");
        }
     }
}