2012-01-25 4 views

ответ

3

Нет, вы не можете комбинировать синтаксис селектора CSS и синтаксис XPath в одном выражении. Ни один из языков не имеет какой-либо функции, которая позволяет вам комбинировать выражение с другим.

Вы можете использовать CSS-селектор только в XPath как XPath, что означает, что вам нужно будет перевести его самостоятельно. В вашем случае, вот в результате выражение XPath:

 
//*[contains(concat(' ', @class, ' '), ' myClass ')]//div[contains(., 'Hello!')] 

Конечно, это зависит от того, что вы можете достичь с помощью CSS селекторов или XPath. Например, if the :contains() pseudo-class hadn't been dropped from CSS3, вы смогли бы использовать этот селектор CSS так же хорошо:

.myClass div:contains('Hello!') 

Но он был удален из спецификации, так что вы будете только в состоянии заставить его работать как селектор JQuery или Selenium CSS locator.

+0

'содержит (@class, 'myClass')' также соответствует 'AmyClassman'. Лучше использовать что-то вроде 'contains (concat ('', @class, ''), 'myClass')' –

+0

@ lwburk: Я надеялся на решение этого. Благодаря! Я обновил свой ответ. – BoltClock

Смежные вопросы