Поясню на примере гуглёвой страницы. стартуем хром и навигируем на google.com
PS C:\Users\Alexander> (Get-SeWebElementCollection -TagName '*' | %{ $_.TagName;}).count
237
PS C:\Users\Alexander> (Get-SeWebElementCollection -Name '*' | %{ $_.TagName;}).count
Get-SeWebElementCollection : The timeout expired for WebElement with Name = "*" (это моя ошибка. Означает, что за дефолтное время драйвер ничего не выдал, но и не было эксепшена)
At line:1 char:2
+ (Get-SeWebElementCollection -Name '*' | %{ $_.TagName;}).count
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (:) [Get-SeWebElementCollection], Exception
+ FullyQualifiedErrorId : TimeoutExpired,SePSX.Commands.GetSeWebElementCollectionCommand
PS C:\Users\Alexander> (Get-SeWebElementCollection -CSS '*' | %{ $_.TagName;}).count
237
PS C:\Users\Alexander> (Get-SeWebElementCollection -XPath '*' | %{ $_.TagName;}).count
1
PS C:\Users\Alexander> (Get-SeWebElementCollection -Class '*' | %{ $_.TagName;}).count
Get-SeWebElementCollection : Could not find an element by its ClassName = "*" (это эксепшн драйвера)
At line:1 char:2
+ (Get-SeWebElementCollection -Class '*' | %{ $_.TagName;}).count
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-SeWebElementCollection], Exception
+ FullyQualifiedErrorId : FailedToFindElements,SePSX.Commands.GetSeWebElementCollectionCommand
PS C:\Users\Alexander> (Get-SeWebElementCollection -LinkText '*' | %{ $_.TagName;}).count
Get-SeWebElementCollection : The timeout expired for WebElement with LinkText = "*" (это моя ошибка. Означает, что за дефолтное время драйвер ничего не выдал, но и не было эксепшена)
At line:1 char:2
+ (Get-SeWebElementCollection -LinkText '*' | %{ $_.TagName;}).count
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (:) [Get-SeWebElementCollection], Exception
+ FullyQualifiedErrorId : TimeoutExpired,SePSX.Commands.GetSeWebElementCollectionCommand
PS C:\Users\Alexander> (Get-SeWebElementCollection -Id '*' | %{ $_.TagName;}).count
Get-SeWebElementCollection : The timeout expired for WebElement with Id = "*" (это моя ошибка. Означает, что за дефолтное время драйвер ничего не выдал, но и не было эксепшена)
At line:1 char:2
+ (Get-SeWebElementCollection -Id '*' | %{ $_.TagName;}).count
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (:) [Get-SeWebElementCollection], Exception
+ FullyQualifiedErrorId : TimeoutExpired,SePSX.Commands.GetSeWebElementCollectionCommand
Итого, имеем четыре результата для астериска:
TagName и CSSValue возвращают 237
XPath возвращает 1
ClassName возвращает эксепшн
Name, Id, LinkText, наверное, и PartialLinkText - ничего не возвращают, но и нет эксепшена
Какую стратегию выборки вы мне посоветуете избрать? По TagName? По CSSValue? Кто-нибудь где-нибудь видел описание этой логики? (читать сорцы драйверОВ не хочу :)) Наверное, по TagName - они же всегда есть...