XPATH - maxred01/QA2825 GitHub Wiki

Xpath

  1. Поиск элемента по тегу и классу:

//tagname[@class='classname']

Например: //div[@class='header']

  1. Поиск элемента по тегу и атрибуту:

//tagname[@attribute='value']

Например: //input[@name='email']

  1. Поиск элемента по текстовому содержимому:

//*[text()='text']

Например: //*[text()='Submit']

  1. Поиск элемента по частичному совпадению текста:

//*[contains(text(),'text')]

Например: //*[contains(text(),'Login')]

  1. Поиск элемента по атрибуту, содержащему определенную строку:

//tagname[contains(@attribute,'value')]

Например: //a[contains(@href,'example.com')]

  1. Поиск элемента по порядковому номеру:

//tagname[position()=number]

Например: //li[position()=3]

  1. Поиск элемента по комбинации нескольких условий:

//tagname[@attribute='value' and contains(text(),'text')]

Например: //div[@class='header' and contains(text(),'Welcome')]

  1. Поиск элементов по атрибуту без учета регистра:

//tagname[translate(@attribute, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='value']

Например: //input[translate(@type, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='text']

  1. Поиск элемента по атрибуту, начинающемуся с определенной строки:

//tagname[starts-with(@attribute,'value')]

Например: //a[starts-with(@href,'https')]

  1. Поиск элемента по атрибуту, заканчивающемуся определенной строкой:

//tagname[ends-with(@attribute,'value')]

Примечание: функция "ends-with" не поддерживается в стандартном XPath 1.0, но ее можно использовать в XPath 2.0 и выше, а также в некоторых реализациях XPath 1.0, таких как в XPath, используемом в браузере Google Chrome. Например: //img[ends-with(@src,'.png')]

  1. Поиск элемента по его атрибуту ID:

//*[@id='value']

Например: //*[@id='login-button']

  1. Поиск элемента по его атрибуту name:

//tagname[@name='value']

Например: //input[@name='username']

  1. Поиск элемента по его атрибуту type:

//tagname[@type='value']

Например: //input[@type='checkbox']

  1. Поиск элемента, содержащего указанный атрибут:

//tagname[@attribute]

Например: //input[@disabled]

  1. Поиск элемента, содержащего несколько классов:

//tagname[contains(@class,'class1') and contains(@class,'class2')]

Например: //div[contains(@class,'header') and contains(@class,'menu')]

  1. Поиск элемента с использованием регулярного выражения:

//tagname[matches(@attribute, 'regex')]

Например: //input[matches(@id, 'user.*')]

  1. Поиск нескольких элементов с помощью оператора "or":

//tagname[@attribute='value1' or @attribute='value2']

Например: //input[@type='text' or @type='email']

  1. Поиск элементов, находящихся внутри других элементов:

//tagname1//tagname2

Например: //div//a

  1. Поиск элементов, находящихся непосредственно внутри других элементов:

//tagname1/tagname2

Например: //ul/li

  1. Поиск элементов, находящихся на одном уровне вложенности:

//tagname1/following-sibling::tagname2

Например: //div/following-sibling::p

  1. Поиск элемента по его позиции с конца:

//li[last()-number]

Например: //li[last()-1]

  1. Поиск элемента по его размеру:

//tagname[@attribute>=value]

Например: //input[@maxlength>=10]

  1. Поиск элементов по их дочерним элементам:

//tagname1[tagname2='value']

Например: //div[p='Welcome']

  1. Поиск элемента по его атрибуту, начинающемуся с одного из нескольких значений:

//tagname[@attribute[starts-with(., 'value1') or starts-with(., 'value2')]]

Например: //input[@type[starts-with(., 'butto') or starts-with(., 'submi')]]

  1. Поиск элемента по его атрибуту, содержащему числовое значение:

//tagname[@attribute>=number]

Например: //input[@maxlength>=10]

  1. Поиск элемента с помощью функции text():

//tagname[text()='value']

Например: //a[text()='Read more']

  1. Поиск элемента по его атрибуту, не содержащему указанное значение:

//tagname[@attribute!='value']

Например: //input[@type!='hidden']

  1. Поиск элемента по его атрибуту, содержащему любое из нескольких значений:

//tagname[@attribute='value1' or @attribute='value2']

Например: //input[@type='text' or @type='email']

  1. Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но начинающемуся с той же строки:

//tagname[substring(@attribute,1,string-length('value'))!='value']

Например: //a[substring(@href,1,string-length('http://example.com'))!='http://example.com']

  1. Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но содержащему ту же подстроку:

//tagname[not(contains(@attribute,'value'))]

Например: //a[not(contains(@href,'example.com'))]

  1. Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, и не содержащему ту же подстроку:

//tagname[not(@attribute='value') and not(contains(@attribute,'substr'))]

Например: //input[not(@type='text') and not(contains(@class,'hide'))]

  1. Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но заканчивающемуся той же строкой:

//tagname[substring(@attribute,string-length(@attribute)-string-length('value')+1)!='value']

Например: //a[substring(@href,string-length(@href)-string-length('example.com')+1)!='example.com']

  1. Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но содержащему ту же последовательность символов:

//tagname[not(translate(@attribute, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')='VALUE')]

Например: //input[not(translate(@type, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')='BUTTON')]