Интересно, а зачем ВСЕ проверять? Насколько я заметил, хром, к примеру, может обрасти тулбарами, кнопками ипр. барахлом и тогда кол-во элементов может не совпасть с кол-вом у лиса. Я наблюдал это на довольно простых html'ках, разное общее число элементов.
Как собрать все элементы? Самый простой, но не быстрый способ - собрать по tagName = * или XPath = //* (обсуждали здесь: http://automated-testing.info/forum/kak-sdelat-vyborku-vsego-vsego )
Интересно, надо будет поизучать этот силктест - за два дня вторая интересная инфа о нём. В UIAutomaiton мы делаем так (показан дефолтный аутпут, можно дампить хоть хэндлы с пидами, что, конечно, имеет смысл только пока программа запущена :):
PS C:\Users\shuran> Start-Process calc -PassThru | Get-UIAWindow | Get-UIAButton | ConvertTo-UIASearchCriteria
@{Name="Memory clear";AutomationId="122";ControlType="Button";}
@{Name="Backspace";AutomationId="83";ControlType="Button";}
@{Name="7";AutomationId="137";ControlType="Button";}
@{Name="4";AutomationId="134";ControlType="Button";}
@{Name="1";AutomationId="131";ControlType="Button";}
@{Name="0";AutomationId="130";ControlType="Button";}
@{Name="Memory recall";AutomationId="123";ControlType="Button";}
@{Name="Clear entry";AutomationId="82";ControlType="Button";}
@{Name="8";AutomationId="138";ControlType="Button";}
@{Name="5";AutomationId="135";ControlType="Button";}
@{Name="2";AutomationId="132";ControlType="Button";}
@{Name="Memory store";AutomationId="124";ControlType="Button";}
@{Name="Clear";AutomationId="81";ControlType="Button";}
@{Name="9";AutomationId="139";ControlType="Button";}
@{Name="6";AutomationId="136";ControlType="Button";}
@{Name="3";AutomationId="133";ControlType="Button";}
@{Name="Decimal separator";AutomationId="84";ControlType="Button";}
@{Name="Memory add";AutomationId="125";ControlType="Button";}
@{Name="Negate";AutomationId="80";ControlType="Button";}
@{Name="Divide";AutomationId="91";ControlType="Button";}
@{Name="Multiply";AutomationId="92";ControlType="Button";}
@{Name="Subtract";AutomationId="94";ControlType="Button";}
@{Name="Add";AutomationId="93";ControlType="Button";}
@{Name="Memory subtract";AutomationId="126";ControlType="Button";}
@{Name="Square root";AutomationId="110";ControlType="Button";}
@{Name="Percentage";AutomationId="118";ControlType="Button";}
@{Name="Reciprocal";AutomationId="114";ControlType="Button";}
@{Name="Equals";AutomationId="121";ControlType="Button";}
@{Name="Minimize";AutomationId="Minimize";ControlType="Button";}
@{Name="Maximize";AutomationId="Maximize";ControlType="Button";}
@{Name="Close";AutomationId="Close";ControlType="Button";}
После этого эти самые сёрч крайтириа можно использовать в командлете Test-UIAControlState -SearchCriteria @{...},@{...},@{...},@{...},@{...},...
Как видите, на вход подаётся точно то же самое, но через запятую (массив хэштаблиц). На выходе - True или False.
На самом деле, гораздо лучше использовать Wait-UIAControlState -SearchCriteria @{...},@{...},@{...},@{...},@{...},...
Она делает точно такую же проверку, но регулярно на протяжении всего таймаута.
Подобные командлеты позволяют не заботиться о моменте отрисовки окна, они сами дождутся, таймаут лишь поставьте достаточный.
Вернёмся к вэб-дровам.
Драйвер может выдать все элементы (их положение и размеры, если это надо - но надо ли?). насколько я понимаю, вам это нужно для каких-то узких целей, потому что обычные сайты не обязаны быть всегда одинаковыми: баннеры, имя залогоненного юзера, всякие рюшечки под юзера, даже скины бывают. Разве что вэб-консоли разных железяк или админских продуктов, да и то - имя юзера наверняка Я бы посоветовал делать выборочный список - к примеру, выбрать элементы нескольких тэгов и достаточно.
Вообще тема интересная, не удивлюсь, если скоро появятся командлеты ConvertTo-SeSearchCriteria, Test-SeControlState и Wait-SeControlState.
Кстати говоря, есть ведь другой путь, и он даже может быть быстрее: сохранение в файл и сравнение файлов. Все браузеры поддаются автоматизации через UIAutomation (я про меню, странички-то как раз не поддаются во многих браузерах) или MS UI Automation, white, etc (на заметку: etc - это самый большой список тестировочных фреймворков в мире, упоминается чаще всего. Объединяет столько фреймворков, что все даже затрудняются их назвать).
Так вот, сохраняете страничку и сравниваете с сохранённой в прошлый раз. Утилиты fc, diff, etc (да, они тоже) проверены миллионами пользователей (без шуток!) и работают очень быстро.