t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f7487c29040> #<Tag:0x00007f7487c28f78> #<Tag:0x00007f7487c28e10>

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

Документ

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

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

В просторах интернета особого не нашел(подобные вопрос были http://stackoverflow.com/questions/14595149/alternative-of-contains-in-cssselector-selenium-webdriver)

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

.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’)

Те 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 Симпатия