У меня сейчас проблема с Selenium и findElements (By.xpath ()).
В настоящее время я автоматизируюсь на Salesforce (идентификаторы Dynami c и используем text (), поэтому мы не можем использовать селекторы CSS), и хотя мой XpathFinder (Chrome AddOn) может обрабатывать Xpath Селен выдает следующую ошибку:
invalid selector: Unable to locate an element with the xpath expression
//div[contains(@class,'windowViewMode-normal')]//div[@class='slds-tabs_default' and not(ancestor::*
[contains(@class,'sidebar')])]//force-record-layout-item//(span[not(contains(@class,'assistive')
or @class='slds-checkbox' or contains(@class,'slds-button') or contains(@class,'test-id__field-
value') or contains(@class,'flex-wrap') or contains(@class,'avatar'))]|a|emailui-formatted-email-
wrapper//div[not(*)]|lightning-formatted-text|lightning-formatted-number[text()]|lightning-
formatted-name|lightning-formatted-phone[not(*)]|lightning-formatted-address[not(*)])
because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string
'//div[contains(@class,'windowViewMode-normal')]//div[@class='slds-tabs_default' and
not(ancestor::*[contains(@class,'sidebar')])]//force-record-layout-
item//(span[not(contains(@class,'assistive') or @class='slds-checkbox' or contains(@class,'slds-
button') or contains(@class,'test-id__field-value') or contains(@class,'flex-wrap') or
contains(@class,'avatar'))]|a|emailui-formatted-email-wrapper//div[not(*)]|lightning-formatted-
text|lightning-formatted-number[text()]|lightning-formatted-name|lightning-formatted-
phone[not(*)]|lightning-formatted-address[not(*)])'
is not a valid XPath expression.
(Session info: chrome=79.0.3945.117)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),
platform=Windows NT 10.0.17763 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Проблема в группировке после
//div[contains(@class,'windowViewMode-normal')]//div[@class='slds-tabs_default' and not(ancestor::*
[contains(@class,'sidebar')])]//force-record-layout-item//...
Если я удаляю группировку ((до первого интервала и) в конце xpath) и добавьте эту часть xpath после каждого | xpath может быть оценен как XpathFinder, так и Selenium.
Неправильно ли моя группировка, и браузер просто случайно может это оценить или глючит Selenium при оценке xpaths?
Итак, суммировать это просто :
Если я попытаюсь оценить следующее
//div//(a|b)
, оценка не удалась с данной ошибкой. Группировка выполнена неправильно или я что-то упустил?
РЕДАКТИРОВАТЬ:
После того, как ChromeDriver для v79 соответствовал версиям, появилась та же ошибка:
invalid selector: Unable to locate an element with the xpath expression
(//div[contains(@class,'windowViewMode-normal')]//div[@class='slds-
tabs_default' and not(ancestor::*[contains(@class,'sidebar')])]//force-record-
layout-item)//(span[not(contains(@class,'assistive') or @class='slds-checkbox'
or contains(@class,'slds-button') or contains(@class,'test-id__field-value') or
contains(@class,'flex-wrap') or contains(@class,'avatar'))]|a|emailui-
formatted-email-wrapper//div[not(*)]|lightning-formatted-text|lightning-
formatted-number[text()]|lightning-formatted-name|lightning-formatted-
phone[not(*)]|lightning-formatted-address[not(*)])
because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string
'(//div[contains(@class,'windowViewMode-normal')]//div[@class='slds-
tabs_default' and not(ancestor::*[contains(@class,'sidebar')])]//force-record-
layout-item)//(span[not(contains(@class,'assistive') or @class='slds-checkbox'
or contains(@class,'slds-button') or contains(@class,'test-id__field-value') or
contains(@class,'flex-wrap') or contains(@class,'avatar'))]|a|emailui-
formatted-email-wrapper//div[not(*)]|lightning-formatted-text|lightning-
formatted-number[text()]|lightning-formatted-name|lightning-formatted-
phone[not(*)]|lightning-formatted-address[not(*)])' is not a valid XPath
expression.
(Session info: chrome=79.0.3945.117)