Подключите Watin к WebBrowser (WPF) - PullRequest
0 голосов
/ 13 июля 2010

Я искал в интернете (включая ответы с этого сайта), но у меня ничего не работает.Кто-нибудь знает правильный подход для подключения WatiN к экземпляру WebBrowser (версия для Windows Presentation Forms)?

Большинство ответов, которые я прочитал, рассказывают мне об «ActiveXInstance», которого нет в WPF-версии WebBrowser.Я попытался раскрыть интерфейс IWebBrowser 2 из документации WebBrowser (http://msdn.microsoft.com/en-us/library/cc491073%28v=VS.90%29.aspx), но после значительной переделки структуры кода, чтобы заставить его скомпилироваться, простое WatiN goto (оператор URL просто заканчивается по времени.

В качестве последнего средства я попытался

WatiN.Core.Settings.AutoStartDialogWatcher = false;
var browser = new IE(wbrowser);

В событии loadcompleted (поскольку экземпляр браузера приведет к нулю, если я поместу его в метод конструктора MainWindow ()), но это вызываетИсключение аргумента с сообщением "iwebBrowser2 должен реализовать shdocvw.IWebBrowser2". К сожалению, я не знаю, как решить эту проблему.

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Скорее всего, вы захотите прикрепить дескриптор окна:

var ie = IE.AttachToIE(Find.By("hwnd", containerHwnd);
0 голосов
/ 21 июля 2010

В WatiN_IE_ExtensionMethods.cs API, который я написал для O2 , я смог заставить его работать довольно хорошо с обычным веб-браузером WinForms (внутри другого элемента управления WinForm или элемента управления WPF) ).

Поскольку вы можете использовать элементы управления WinForm внутри WPF (и это точно, что .NET 3.5 делает с WPF WebBrowser, поскольку он не является собственным элементом управления WPF), вот пример, который: * делает именно это Использование WatiN внутрь WPF .

В этом видео показан сценарий O2 , использующий эту технику: http://www.youtube.com/watch?v=YsVX5-nGHWI

Обратите внимание, что я написал несколько методов Extension, чтобы упростить использование WatiN:

var ie = winFormsPanel.add_IE();
ie.open("http://www.google.com");       
ie.link("Videos").flash().click();
ie.field("q").value("OWASP O2 Platform").flash();
ie.button("Search Videos").flash().click();
ie.link("O2 Platform - XSS PoC builder.avi").scrollIntoView().flash().click();
...