Как уже упоминали другие, у вас есть закрытие] и) в обратном направлении, но я хотел бы предложить вам использовать селектор CSS. У XPath есть свое место, но в этом нет необходимости. Селекторы CSS имеют несколько преимуществ перед XPath:
- Улучшена поддержка селекторов CSS
- Поведение в браузерах более согласовано для селекторов CSS
- Существует незначительныйпреимущество в производительности при использовании селекторов CSS
- При работе с элементами с большим количеством классов (как в вашем случае здесь) проще использовать селектор CSS
Короткая версия:
Вы можете использовать селектор CSS ниже
div.ant-notification-notice.ant-notification-notice-closable.ng-trigger.ng-trigger-notificationMotion
Длинная версия:
Когда вы используете XPath, такой как
//div[@class='ant-notification-notice ant-notification-notice-closable ng-trigger ng-trigger-notificationMotion']
, то, что это делает, является точным совпадением строки для этого большогоСтрока, содержащая несколько классов. Если другой класс будет добавлен, локатор потерпит неудачу. Если порядок классов будет изменен, локатор потерпит неудачу ... и так далее. Селектор CSS не имеет этих проблем, потому что он ищет классы в любом порядке, и не имеет значения, есть ли у элемента дополнительные классы.
XPath можно использовать практически для чего угодно, но, как вы можете видеть,выше есть недостатки. Из-за этого, это рекомендуется многими / большинством докладчиков на конференциях Selenium (например, seleniumconf и SauceCon), включая многих участников Selenium, которые вы используете
- ID
- CSS селекторы
- XPath, только когда это необходимо, и это необходимо только тогда, когда вы находите элемент по содержанию текста или выполняете обход DOM