Я пытаюсь загрузить файл с использованием Watin v2.1 с C# 4.0 в IE9, и мне не повезло. Есть другие вопросы, задающие аналогичный вопрос, но ни один из других ответов не корректно загружает файл в моей ситуации, и я их всех устал.C# WatiN Загрузка файлов IE9
В версии 2.1 Watin добавлен новый статический метод ReturnDialogHandler.CreateInstance(), который должен получить правильный обработчик диалогов для любой версии IE. Я не могу понять, как реализовать этот метод.
Следующий код от Question Here не загружает файл в IE9.
using(IE ie = new IE(someUrlToGoTo))
{
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(fullFileName);
ie.AddDialogHandler(fileDownloadHandler);
ie.Link("startDownloadLinkId").ClickNoWait();
fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(15);
fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
Следующий код взять из Question Here не загружает файл в IE9. Тем не менее, я не был на 100% уверен, что следует использовать «CANCEL_LINK». Я попытался использовать имя файла, путь к файлу для загрузки, ect.
var cancel = browser.Link(Find.ByUrl(CANCEL_LINK));
var confirmDialog = new ConfirmDialogHandler();
using (new UseDialogOnce(browser.DialogWatcher, confirmDialog))
{
cancel.ClickNoWait();
confirmDialog.WaitUntilExists();
confirmDialog.OKButton.Click();
browser.WaitForComplete();
}
Update 1
Я также попытался с помощью SendKeys вручную сохранить файл без использования WatiN и не кажется, чтобы быть последовательным. Он работает немного по-разному каждый раз и несколько раз даже не загружает файл. Несколько раз он не переименовывает файл, а загружает его. Вот код:
System.Windows.Forms.SendKeys.SendWait("%N"); // Selects Notification Bar
System.Windows.Forms.SendKeys.SendWait("{TAB}");
System.Windows.Forms.SendKeys.SendWait("{DOWN 2}"); // Save As Option
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
System.Windows.Forms.SendKeys.SendWait("DownloadedFile.txt"); // Enters File Name
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
Update 2: 3/19
Я попытался предложения, перечисленные на KMoraz, а также не мог получить любой из них работать. Я попытался перейти к точному пути к файлу с помощью ie.GoTo (filePathofFile) или найти по ID, и он найдет файл, но не начнет загрузку. Кажется, я могу найти файл правильно, но он просто не загрузит его. Могу ли я сделать что-то не по порядку?
Обновлено Покушение:
string fullFileName = "https://mywebsite.com/files/area/download/ImportantFile.ZIP";
browser.GoTo(fullFileName);
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(fullFileName);
browser.AddDialogHandler(fileDownloadHandler);
fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(15);
fileDownloadHandler.WaitUntilDownloadCompleted(200);
я получаю следующее исключение: WatiN Исключение unhanded ... не показан диалог через 15 секунд. Используя GoTo, страница не загружается на страницу загрузки, но файл находится в панели уведомлений и готов к загрузке. Есть предположения?
Дополнительная информация о сайте: Мне нужно войти на сайт https, используя имя пользователя и пароль. После входа в систему я попадаю на главную страницу, где есть ссылки «Загрузить файл текущего дня». Я нажимаю на текст, чтобы загрузить текущий файл. Как только эта ссылка была нажата, вы попадете на страницу загрузки. Файл появится в панели уведомлений для загрузки в IE. Существует также ссылка «Если окно загрузки не отображается, нажмите« Загрузить файл ». Его можно щелкнуть напрямую, чтобы файл появился на панели уведомлений, чтобы загрузить файл.
Попробуйте ответить на эту тему: http://stackoverflow.com/questions/7500339/how-to-test-file-download-with-watin-ie9/8532222#8532222 – t3hn00b
Попробуйте ответ по этой ссылке http: //stackoverflow.com/questions/7500339/how-to-test-file-download-with-watin-ie9/8532222#8532222 – t3hn00b
Я получил вышеуказанную информацию, чтобы загрузить файл, но я бы хотел, чтобы WatiN обрабатывал скачать. Файл загружается, но после завершения работы программа может вызвать проблемы при одновременном запуске нескольких разных задач. Спасибо за ввод. – buzzzzjay