1

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

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

4

1 回答 1

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}");
        }
     }
}
于 2013-03-24T02:43:54.583 回答