2013-08-22 2 views
0

Так что в основном я пытаюсь найти все скрытые окна IE, это должно быть легкой задачей для LINQ. Поэтому я попробовал просто где:Watin IE становится видимым при использовании LINQ, где

var Instances = IE.InternetExplorers().Where(x => x.Visible == false); 

но когда я называю InternetExplorers() он делает все случаи видимы и не получает никаких результатов. Так я пытался к другому, где:

var Instances = IE.InternetExplorers().Where(x => x.Title != ""); 

Это также делает все экземпляры видимыми, но, очевидно, получает все открытые окна IE.

Так есть способ выбрать все экземпляры, которые не видны, не делая их видимыми, или я делаю что-то неправильно?

+0

Ваш вызов 'InternetExplorers()' необходимо установить все экземпляры видимым. –

+0

Да, это правда, так есть альтернативный способ получить все экземпляры. –

ответ

0

Я нашел ответ, я посмотрел в WatiN source и обнаружил, что метод InternetExplorers() просто возвращает new IECollection(true); так я смотрел на IECollectionconstructor и обнаружил, что WatiN.Core.Native.InternetExplorer.ShellWindows2() возвращает все браузеры.

Так что в конце концов я сделал это:

var allBrowsers = new WatiN.Core.Native.InternetExplorer.ShellWindows2().Where(x => x.Visible == false); 

foreach (SHDocVw.IWebBrowser2 internetExplorer in allBrowsers) 
{ 
    //do somthing. 
}