Используйте WatiN для автоматизации загрузки файла на сайт - PullRequest
1 голос
/ 15 июня 2010

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

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();

Ответы [ 2 ]

1 голос
/ 10 августа 2011

У меня была такая же проблема.Я использую 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 минут.

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

1 голос
/ 05 августа 2010

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

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

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

...