Я пишу программу для очистки веб-страниц, используя WatiN на машине под управлением Windows 7, на которой запущен Internet Explorer 11. Мой просмотрщик PDF - это Foxit Reader, и в настоящее время он работает в Internet Explorer.Присоединение браузера к PDF-файлу в Internet Explorer
Моя цель: Я пытаюсь найти способ щелкнуть ссылку, которая загружает всплывающее окно, которое отображает файл .pdf; однако обычные методы, используемые в Watin для идентификации всплывающего окна, похоже, не работают. Другими словами, Ватин не может найти всплывающее окно ... и я не понимаю, что делать.
Для начала, я, перейдя по следующей ссылке в целевой веб-страницы:
<a onclick="window.open('http://go.website.com/DocumentLoader.aspx?file=3%2f111978%2fatt%2f142245916_OPT.pdf','attachment','width=960px,height=640px,resizable=no')" href="javascript:void(0)">0017384611</a>
Я могу нажать на эту ссылку, используя следующий фрагмент WatiN кода:
browser.Link(lnk => lnk.GetAttributeValue("onclick") != null && lnk.GetAttributeValue("onclick").Contains("_OPT.pdf")).ClickNoWait();
Эта часть работает и приводит к новому окну Internet Explorer, который открывается с открытым файлом .pdf.
Я затем попытаться создать новый объект браузера для этого окна, используя следующий фрагмент кода:
IE popup = IE.AttachTo<IE>(Find.ByUrl(url => url != null && url.Contains("DocumentLoader.aspx")));
Однако это не удается идентифицировать окно, хотя новое всплывающее окно имеет URL, который включает в себя имя файла «DocumentLoader.aspx» (см. исходную ссылку для этого).
Что странно, когда я запросил объект InternetExplorer, чтобы получить все его окна, тот, у которого есть .pdf-файл, вообще не отображается. Я не знаю, почему это так, хотя я подозреваю, что это связано с тем, что в окне отображается файл .pdf, а не обычный HTML-файл.
Я также попытался открыть новый объект браузера с помощью URL-адреса DocumentLoader.aspx, но WatiN, похоже, не может этого сделать (он не дает времени на выход).
Может ли кто-нибудь предложить, как я могу получить WatiN для распознавания нового всплывающего окна?
Спасибо!
ОБНОВЛЕНИЕ: После того, как появится всплывающее окно, я проверил, чтобы увидеть, если Watin обнаружено новое окно, используя следующий код:
var instances = new IECollection(true);
Console.WriteLine("Instances = " + instances.Count);
Это показывает счетчик 1, хотя, как показано ниже показывает, есть два окна Internet Explorer открыто:
Спасибо, это приятный ответ «вне коробки». Также, невероятно просто! – ChicagoMike