Advanced locators - little prince

23
Как находить ненаходимое: возможности CSS и Xpath локаторов Вадим Зубович

Transcript of Advanced locators - little prince

Page 1: Advanced locators - little prince

Как находить ненаходимое:возможности CSS и Xpath

локаторов

Вадим Зубович

Page 2: Advanced locators - little prince

О себе

Вадим Зубович

Активист COMAQA

www.comaqa.by

Page 3: Advanced locators - little prince

Синтаксис CSS-селекторовdiv [name=‘login’][class=‘main’]>div[class=‘main’]>…

div div[class=‘main’] .main

div [id=‘focus’] div#focus

.big.content

Page 4: Advanced locators - little prince

CSS-селекторы, combining selectors

snake[type=‘boa_constrictor’]>elephant

Page 5: Advanced locators - little prince

CSS-селекторы, id

#little_prince[name=‘earth’]>

Page 6: Advanced locators - little prince

CSS-селекторы несколько нод

#little_prince,rose

Page 7: Advanced locators - little prince

CSS-селекторы несколько нод

[name=‘b612’]>#little_prince,[name=‘b612]>rose

Page 8: Advanced locators - little prince

CSS-селекторы несколько нод

[name=‘b612’]>#little_prince,rose[windscreen]

Page 9: Advanced locators - little prince

CSS-селекторы siblings

#little_prince+bird #little_prince~bird

Page 10: Advanced locators - little prince

CSS-селекторы pseudo-classes

bird:first-child

Page 11: Advanced locators - little prince

CSS-селекторы pseudo-classes

bird:last-child space>bird:last-child

Page 12: Advanced locators - little prince

CSS-селекторы pseudo-classes

space>bird:nth-child(2) space>bird:nth-last-child(4)

Page 13: Advanced locators - little prince

CSS-селекторы pseudo-classes

rose:only-of-type

Page 14: Advanced locators - little prince

CSS-селекторы pseudo-classes

table>bottle:not([position])

Page 15: Advanced locators - little prince

Синтаксис XPath-локаторовdiv [@name=‘login’][@class=‘main’] /div[@class=‘main’] //…//.

div [@name=‘login’ and @class=‘main’] /div[text()=‘main’] //…//.

div [@name=‘login’ and @class=‘main’] /preceding-sibling::div//…//.

Page 16: Advanced locators - little prince

Xpath-локаторы

//table/bottle[position!=‘standing’] //table/bottle[not(@position)]

Page 17: Advanced locators - little prince

Xpath-локаторы несколько нод

//*[@id=‘little_prince’]|rose

Page 18: Advanced locators - little prince

Xpath-локаторы Xslt-functions

//*[starts-with(@formula,‘a/2’)]//*[contains(@formula,‘2=b’)]//*[ends-with(@formula,‘b/4’)]

Page 19: Advanced locators - little prince

Xpath-локаторы Xslt-functions

//*[contains(text(),‘2=b’)]//*[starts-with(text(),‘a/2’)]//*[ends-with(text(),‘b/4’)]

Page 20: Advanced locators - little prince

Xpath-локаторы Axis

//ram/preceding-sibling::sheep

//ram/following-sibling::sheep

Page 21: Advanced locators - little prince

Xpath-локаторы Axis

//*[@id=‘little_prince’]/ancestor::stone//*[@id=‘little_prince’]/preceding::stone//*[@id=‘little_prince’]/parent::wall //*[@id=‘little_prince’]/..

Page 22: Advanced locators - little prince

Общие рекомендации

Используйте минимально возможное количество параметровИзбегайте сложной иерархииИзбегайте использования индексовИзбегайте поиска по тексту

Ищите уникальные атрибуты или их сочетанияВСЕГДА проверяйте свои локаторы в браузере

Page 23: Advanced locators - little prince

Спасибо за внимание

Вадим Зубовичwww.comaqa.by

Skype: dpi.zubovichhttps://github.com/Fulcrum81