我正在尝试使用selenium取消Firefox中的弹出下载窗口。我可以切换窗口并关闭警报窗口,但我似乎无法选择下载窗口。有什么想法吗?
环顾四周,似乎Selenium RC无法处理下载窗口,因为它们依赖于操作系统。但是,Selenium Web Driver的问题是否相同?我知道可以使用autoit来解决这个问题,但是如果可能的话,我想将它全部保存在Java selenium中。感谢。
答案 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}");
}
}
}