Используйте WatiN для автоматизации загрузки файла на сайт

Мне нужно загрузить файл на сайт. Но есть проблема, я не могу выбрать файл автоматически в коде. Всегда браузер показывает окно выбора файла. Что не так в моем коде?

IE ie = new IE("https://www.xxxx.com/WFrmlogin.aspx");
FileUploadDialogHandler uploadHandler = new FileUploadDialogHandler(@"D:\065-6405_URGENT.xls");

ie.WaitForComplete();
ie.TextField(Find.ById("txtUser")).TypeText("login");
ie.TextField(Find.ById("txtPassWord")).TypeText("***");

ie.Button(Find.ById("btnok")).Click();
ie.WaitForComplete();


ie.GoTo("https://www.orientspareparts.com/inq/WFrmUpOption.aspx");
ie.WaitForComplete();

ie.DialogWatcher.Clear();
ie.AddDialogHandler(uploadHandler);
// This code show choose file dialog
ie.FileUpload(Find.ById("FilUpload")).ClickNoWait();


ie.Button(Find.ById("butUpload")).Click();
ie.WaitForComplete();

person MrDuDuDu    schedule 15.06.2010    source источник


Ответы (2)


У меня такая же проблема. Я использую процесс загрузки, подобный GMail, поэтому я хотел проверить реальные варианты использования. Просто установить свойство Text для моего скрытого ввода файла было невозможно.

В итоге я использовал SendKeys, чтобы ввести путь к моему файлу, а затем отправил «{ENTER}», чтобы отправить диалог.

SetForegroundWindow(browser.hWnd);
SendKeys.SendWait("{ENTER}");
Thread.Sleep(500); // An unfortunate necessity, to give the dialog time to pop up.
SendKeys.SendWait(@"C:\myfile.jpg{ENTER}")

Мне не нравится это решение, особенно сон, но это было лучшее, что я мог сделать менее чем за 30 минут.

Если у кого-то есть лучший вариант, дайте мне знать!

person Christopher Davies    schedule 10.08.2011

Почему вам нужно выбрать из диалога? Попробуйте просто установить текст:

ie.FileUpload(Find.ById("profile_file")).Text = "C:/Desktop/image.jpg";

Я думаю, вы могли бы поговорить с парнем, который задал этот вопрос: Загрузка файла WatiN

person Shady M. Najib    schedule 04.08.2010