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

xpath
locators
css-selectors
Теги: #<Tag:0x00007fedb9921e78> #<Tag:0x00007fedb9921bf8> #<Tag:0x00007fedb9921a18>

(Kuanysh Bekturganov) #1

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

Документ

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

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

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

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


(rmerkushin) #2

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


(Kuanysh Bekturganov) #3

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


(Konstantin) #4

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

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


Выпадающий список - не происходит клик по элементу списка
(Aleksandr Grekul) #5

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


(rmerkushin) #6

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


(Kuanysh Bekturganov) #7

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


(Aleksandr Grekul) #8

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

css=a:contains(‘text’)


(Stan) #9

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


(Kuanysh Bekturganov) #10

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

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

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.


(Stan) #11

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


(Jamie Berry) #12

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


(Stan) #13

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


(Jamie Berry) #14

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

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

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

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


(Kuanysh Bekturganov) #15

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


(Stan) #16

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


(Sergey Korol) #17

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

((JavascriptExecutor) driver).executeScript("$(\""+ selector + "\").doSmthWithJS()");