XPATH - maxred01/QA2825 GitHub Wiki
Xpath
- Поиск элемента по тегу и классу:
//tagname[@class='classname']
Например: //div[@class='header']
- Поиск элемента по тегу и атрибуту:
//tagname[@attribute='value']
Например: //input[@name='email']
- Поиск элемента по текстовому содержимому:
//*[text()='text']
Например: //*[text()='Submit']
- Поиск элемента по частичному совпадению текста:
//*[contains(text(),'text')]
Например: //*[contains(text(),'Login')]
- Поиск элемента по атрибуту, содержащему определенную строку:
//tagname[contains(@attribute,'value')]
Например: //a[contains(@href,'example.com')]
- Поиск элемента по порядковому номеру:
//tagname[position()=number]
Например: //li[position()=3]
- Поиск элемента по комбинации нескольких условий:
//tagname[@attribute='value' and contains(text(),'text')]
Например: //div[@class='header' and contains(text(),'Welcome')]
- Поиск элементов по атрибуту без учета регистра:
//tagname[translate(@attribute, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='value']
Например: //input[translate(@type, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='text']
- Поиск элемента по атрибуту, начинающемуся с определенной строки:
//tagname[starts-with(@attribute,'value')]
Например: //a[starts-with(@href,'https')]
- Поиск элемента по атрибуту, заканчивающемуся определенной строкой:
//tagname[ends-with(@attribute,'value')]
Примечание: функция "ends-with" не поддерживается в стандартном XPath 1.0, но ее можно использовать в XPath 2.0 и выше, а также в некоторых реализациях XPath 1.0, таких как в XPath, используемом в браузере Google Chrome. Например: //img[ends-with(@src,'.png')]
- Поиск элемента по его атрибуту ID:
//*[@id='value']
Например: //*[@id='login-button']
- Поиск элемента по его атрибуту name:
//tagname[@name='value']
Например: //input[@name='username']
- Поиск элемента по его атрибуту type:
//tagname[@type='value']
Например: //input[@type='checkbox']
- Поиск элемента, содержащего указанный атрибут:
//tagname[@attribute]
Например: //input[@disabled]
- Поиск элемента, содержащего несколько классов:
//tagname[contains(@class,'class1') and contains(@class,'class2')]
Например: //div[contains(@class,'header') and contains(@class,'menu')]
- Поиск элемента с использованием регулярного выражения:
//tagname[matches(@attribute, 'regex')]
Например: //input[matches(@id, 'user.*')]
- Поиск нескольких элементов с помощью оператора "or":
//tagname[@attribute='value1' or @attribute='value2']
Например: //input[@type='text' or @type='email']
- Поиск элементов, находящихся внутри других элементов:
//tagname1//tagname2
Например: //div//a
- Поиск элементов, находящихся непосредственно внутри других элементов:
//tagname1/tagname2
Например: //ul/li
- Поиск элементов, находящихся на одном уровне вложенности:
//tagname1/following-sibling::tagname2
Например: //div/following-sibling::p
- Поиск элемента по его позиции с конца:
//li[last()-number]
Например: //li[last()-1]
- Поиск элемента по его размеру:
//tagname[@attribute>=value]
Например: //input[@maxlength>=10]
- Поиск элементов по их дочерним элементам:
//tagname1[tagname2='value']
Например: //div[p='Welcome']
- Поиск элемента по его атрибуту, начинающемуся с одного из нескольких значений:
//tagname[@attribute[starts-with(., 'value1') or starts-with(., 'value2')]]
Например: //input[@type[starts-with(., 'butto') or starts-with(., 'submi')]]
- Поиск элемента по его атрибуту, содержащему числовое значение:
//tagname[@attribute>=number]
Например: //input[@maxlength>=10]
- Поиск элемента с помощью функции text():
//tagname[text()='value']
Например: //a[text()='Read more']
- Поиск элемента по его атрибуту, не содержащему указанное значение:
//tagname[@attribute!='value']
Например: //input[@type!='hidden']
- Поиск элемента по его атрибуту, содержащему любое из нескольких значений:
//tagname[@attribute='value1' or @attribute='value2']
Например: //input[@type='text' or @type='email']
- Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но начинающемуся с той же строки:
//tagname[substring(@attribute,1,string-length('value'))!='value']
Например: //a[substring(@href,1,string-length('http://example.com'))!='http://example.com']
- Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но содержащему ту же подстроку:
//tagname[not(contains(@attribute,'value'))]
Например: //a[not(contains(@href,'example.com'))]
- Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, и не содержащему ту же подстроку:
//tagname[not(@attribute='value') and not(contains(@attribute,'substr'))]
Например: //input[not(@type='text') and not(contains(@class,'hide'))]
- Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но заканчивающемуся той же строкой:
//tagname[substring(@attribute,string-length(@attribute)-string-length('value')+1)!='value']
Например: //a[substring(@href,string-length(@href)-string-length('example.com')+1)!='example.com']
- Поиск элемента по его атрибуту, содержащему значение, отличное от указанного, но содержащему ту же последовательность символов:
//tagname[not(translate(@attribute, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')='VALUE')]
Например: //input[not(translate(@type, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')='BUTTON')]