Селекторы CSS — это шаблон для выбора элементов HTML. Это позволяет нам выбирать на основе имени тега элемента, имени класса, идентификатора, атрибутов и других атрибутов. Синтаксис селекторов CSS прост и гибок, и это часто используемый способ поиска элементов при разработке интерфейса.
CSS-позиционирование в селене,Фактически, конкретные элементы находятся через cssselector.,cssселекторотсинтаксис CSS。CSSПозиционирование имеет следующие существенные преимущества:
Базовый селектор
селектор | Формат | Пример | Пример описания |
---|---|---|---|
Выбрать все | Выбрать все элементы | ||
селектор тегов | HTML-тег | p | Выбрать все\<p>элемент |
Селектор идентификатора | Значение атрибута #id | #su | Выберите все элементы с id='su' |
селектор класса | Значение атрибута .class | .s_btn | Выберите все элементы с class='s_btn' |
Селектор атрибутов 1 | имя атрибута | type | Выбрать все элементы с атрибутом типа |
Селектор атрибутов 2 | Имя атрибута = 'значение атрибута' | type="submit" | Выберите все элементы с type="submit" |
Селектор атрибутов 3 | Имя атрибута~='значение атрибута' | type~="submit" | Выберите все элементы, тип которых содержит «отправить». |
Селектор атрибутов 4 | Имя атрибута|='значение атрибута' | type|="submit" | Выберите все элементы, тип которых начинается с «отправить». |
Примечание. Некоторые атрибуты элементов имеют несколько значений (например, атрибуты класса). При их использовании значения разделяются пробелами.
Селектор комбинации
Селектор Решение состоит в том, чтобы использовать несколько Базовых одновременно селектор для лучшей фильтрации целевых элементов
селектор | Формат | Пример | Пример описания |
---|---|---|---|
Маркируйте определенные атрибуты | Тег плюс описание атрибута | input#su | Выбрать всеid='su'из\<input>элемент |
союз | элемент 1, элемент 2 | div,p | Выбрать все\<div>и\<p>элемент |
отец и сын | Элемент 1>Элемент 2 | div>p | Выбрать всеродитель\<div>из\<p>элемент |
Потомки | Элемент 1 Элемент 2 | div p | выбирать\<div>серединаизвсе\<p>элемент |
соседний | элемент 1 + элемент 2 | div+p | выбирать\<div>Тот же уровеньназадизсоседний\<p>элемент |
Тот же уровень | Элемент 1~Элемент 2 | div~p | выбирать\<div>Тот же уровеньназадизвсе\<p>элемент |
Селектор псевдоатрибутов
Селектор псевдоатрибутовотносится кэлементсуществоватьhtmlЭтого свойства на самом деле не существует в,Является ли атрибут расширенного описания определенным CSS
селектор | Формат | Пример | Пример описания |
---|---|---|---|
уникальный дочерний элемент | :only-child | p:only-child | Выбрать все\<p>элемент И это должноэлементявляется его родителемизединственныйэлемент |
первый дочерний элемент | :first-child | p:first-child | Выбрать все\<p>элемент И это должноэлементявляется его родителемизпервыйэлемент |
последний дочерний элемент | :last-child | p:last-child | Выбрать все\<p>элемент И это должноэлементявляется его родителемиз最назад一个子элемент |
Селектор заказов | :nth-child(n) | p:nth-child(2) | Выбрать все\<p>элемент И это должноэлементявляется его родителемизвторой сынэлемент |
Выбор типа заказа | :nth-of-type(n) | p:nth-of-type(2) | Выбрать все\<p>элемент И это должноэлементявляется его родителемизвторой\<p>элемент |
обратный порядокселектор | :nth-last-child(n) | p:nth-last-child(2) | Выбрать все\<p>элемент И это должноэлементявляется его родителемиз倒数второй сынэлемент |
Селектор типа обратного ордера | :nth-last-of-type(n) | p:nth-last-of-type(2) | Выбрать все\<p>элемент И это должноэлементявляется его родителемиз倒数второй\<p>элемент |
id
селектор Находитьпроходитьcssпозицияизid
属性Находить百度首页из Поле вводаэлемент,код следующий:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '#kw')
print(element)
class
селектор Находитьпроходитьэлементиз.class
属性值Находитьэлемент,В качестве примера возьмем поле ввода на домашней странице Baidu.,код следующий:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '.s_ipt')
print(element)
Давайте продолжим использовать поле ввода на домашней странице Baidu в качестве примера.,Поле ввода обычно имеетinput
Этикетка,код следующий:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'input')
print(element)
отец по элементу и сынотношениевыбирать,Пример: прямая иерархическая связь дочернего элемента,использовать>
Число,Продолжайте использовать окно поиска на главной странице Baidu в качестве примера.,код следующий:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, '.bg.s_ipt_wr > input')
print(element)
Примечание. Если связь между двумя элементами не является прямой связью подэлемента,Нам нужно использовать пробелы для разделения,Когда существует несколько уровней иерархических отношений,мы можемиспользоватьduoge>
символ Число,Пример следующий:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'form input')
print(element)
------------------------------------
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com") #Открыть веб-страницу
driver.maximize_window()
element = driver.find_element(By.CSS_SELECTOR, 'form > span > input')
print(element)
Позиционирование CSS — очень эффективный метод позиционирования, а его код очень краток. По сравнению с методом позиционирования xpath его скорость позиционирования высока. Если можно использовать позиционирование CSS, для позиционирования элемента рекомендуется использовать позиционирование CSS. Я надеюсь, что эта статья поможет каждому!