Привет! Меня зовут Алексей‚ и я рад рассказать о моем опыте написания различных CSS- и xPath-локаторов для сайта GitHub‚ используя Python.1. Иерархический локатор (вложенность ⏤ три элемента)⁚
python
css_locator ″div.header ul li″
xpath_locator ″//div[@class=’header’]//ul//li»
Эти локаторы позволяют найти все элементы `
- `‚ который‚ в свою очередь‚ находится внутри `
- `‚ находящиеся внутри `
- `‚ а тот‚ в свою очередь‚ внутри `
- ` внутри `
- `. `css_not_locator` находит ``‚ которые не имеют атрибута type со значением ″submit″.
Вот такие локаторы я использовал для автоматизации тестирования на сайте GitHub с помощью Python и библиотеки Selenium. Надеюсь‚ этот опыт будет полезен и вам!
`‚ и имеющие атрибут data-custom со значением ″value″.5. Два разных локатора с поиском чайлда‚ парента и соседей⁚
python
css_child_locator ″div.parent > span″
css_sibling_locator ″input[name’my-name’] label″
css_not_sibling_locator ″input[name’my-name’] ~ label″xpath_child_locator ″//div[@class=’parent’]/span»
xpath_sibling_locator ″//input[@name=’my-name’]/following-sibling::label»
xpath_not_sibling_locator ″//input[@name=’my-name’]/following-sibling::label[not(preceding-sibling::input[@name=’my-name’])]»`css_child_locator` находит элемент ``‚ являющийся прямым потомком элемента с классом ″parent″. `css_sibling_locator` находит элемент `
python
xpath_contains_locator ″//div[contains(text‚ ‘some text’)]″
xpath_starts_with_locator ″//input[starts-with(@id‚ ‘prefix_’)]″
xpath_ends_with_locator ″//*[ends-with(@class‚ ‘_suffix’)]″`xpath_contains_locator` находит элементы‚ содержащие текст ″some text″. `xpath_starts_with_locator` находит ``‚ у которого атрибут id начинается с ″prefix_″. `xpath_ends_with_locator` находит элементы‚ у которых атрибут class оканчивается на ″_suffix″.7. Локаторы для CSS с использованием псевдоселекторов⁚
python
css_hover_locator ″a⁚hover″
css_nth_child_locator ″ul li⁚nth-child(3)″
css_not_locator ″input⁚not([type’submit’])″`css_hover_locator` находит элементы ссылок ``‚ над которыми осуществляется наведение мыши. `css_nth_child_locator` находит третий элемент `
- ` внутри `
2. Локаторы по атрибутам⁚ класс‚ идентификатор‚ имя⁚
python
css_class_locator ″.my-class″
css_id_locator ″#my-id″
css_name_locator ″input[name’my-name’]″
xpath_class_locator ″//*[contains(@class‚ ‘my-class’)]″
xpath_id_locator ″//*[@id=’my-id’]»
xpath_name_locator ″//input[@name=’my-name’]»
Здесь `css_class_locator` находит элемент с классом ″my-class″‚ `css_id_locator` находит элемент с id ″my-id″‚ а `css_name_locator` находит `` с атрибутом name равным ″my-name″. Аналогичные локаторы также можно составить для xPath.3. Локаторы по кастомным атрибутам⁚ data-*⁚
python
css_data_locator ″div[data-custom’value’]″
xpath_data_locator ″//div[@data-custom=’value’]»
`css_data_locator` ищет элемент `
python
css_combined_locator ″div.header ul li[data-custom’value’]″
xpath_combined_locator ″//div[@class=’header’]//ul//li[@data-custom=’value’]»
Эти локаторы находят элементы `