Подскажите как описать contains в CSS локаторе

Доброго времени суток товарищи! Начал присматриваться к css локатору, как описать в css локаторе contains?
То есть сама проблема вот такая:

Документ

Через XPath я его вот так беру:
.//div[@class=‘gwt-Label’ and contains(text(), ‘Документ’)]

А в случае css как?

В просторах интернета особого не нашел(подобные вопрос были css selectors - Alternative of contains in cssSelector ? Selenium WebDriver - Stack Overflow)

Спасибо всем!

.gwt-Label:contains(‘Документ’) но это не совсем css, это sizzle. На счет работы в webdriver не уверен. А чем xpath не устраивает?

Конечно XPath устраивает, но все же хотел узнать

css=gwt-Label:contains(‘Документ’)

вот тут всякие полезности можно найти и по css

1 лайк

Я сильно не заморачивался:
driver.FindElement(By.CssSelector(“img”)).GetAttribute(“src”).Contains(“blablabla”)

Советую не париться и просто юзать xpath. Он более гибок. Но на вкус и цвет как говорят все фломастеры разные :slight_smile:

1 лайк

Конечно спасибо за советы, но все же css не умеет так что ли? “Пытливость ума” не дает покоя

попробуй это:

css=a:contains(‘text’)

https://saucelabs.com/selenium/css-selectors

Те css селекторы что в webdriver не умеют искать по тексту, это есть только в третьей спецификации. Некоторые фреймворки умеют добавлять эту функциональность кастомным жс, тем же сизл.

Очень интересно стало =))

Тут пишут что он:

Deprecated

:contains() - As far as I know, this is gone. The current
CSS3 spec has removed it. I don’t know the story, let me know if you
do. At a glance, it looks ridiculously useful (being able to select
objects based on the textual content they contain). It may be because
of problems, or having content in selectors being undesirable. My
preference would be to have it select by elements rather than text,
like p:contains(img), but alas, no such luck.

http://www.w3schools.com/cssref/css_selectors.asp

Можно и через CSS:
css=span[name=“someName”]:contains(‘someText’)
В Java:
driver.findElement(By.cssSelector(“span[name=“someName”]:contains(“someText”)”));

Зачем писать о том, что не знаешь?

В том-то и дело, что знаю о чём говорю.

Открой свой сайт automated-testing.info на главной и используй команду в Selenium:

click — css=button[class=“ember-view btn-primary btn-small sign-up-button btn”]:contains(“Зарегистрироваться”)

Посмотри, что из этого получится.

Кажется ошибаешься ты, вот возьми Firebug и пробуй посмотреть с contains что-то искать

1 лайк

что такое “используй команду в Selenium”? IDE? А ничего что в IDE используется 3rd party фреймворк для этого и ни в однмо современном браузере это не работает, т.к. этого нет в стандартах css selectors?

Поддержки псевдо-классов в текущей версии драйвера нет (и сомневаюсь, что появится).
Но если на целевом сайте есть поддержка jquery, можно осуществлять подобного рода манипуляции при помощи JS executor’a.

((JavascriptExecutor) driver).executeScript("$(\""+ selector + "\").doSmthWithJS()");
1 лайк