2013-03-24 3 views
1

Я пытаюсь отменить всплывающие окна загрузки в Firefox с селеном. Я могу переключать окна и закрывать окна предупреждений, но я не могу выбрать окно загрузки. Есть идеи?Selenium Web Driver Отмена Firefox Загрузки

Оглядываясь, кажется, что Selenium RC не может обрабатывать окно загрузки, потому что они зависят от ОС. Однако, эта проблема одинакова для Selenium Web Driver? Я знаю, что решение этого можно сделать с помощью autoit, но я хотел бы сохранить все это в Java selenium, если это возможно. Благодарю.

ответ

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}"); 

Подробная ссылки класса SendKeys в C# можно найти в 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}"); 
     } 
    } 
} 
Смежные вопросы