Жизненный цикл некоторых элементов страницы подобен метеору, вспышке на сковороде. Мы не знаем, появлялся ли этот элемент на странице раньше, поэтому хотим запечатлеть этот прекрасный момент и сделать его вечным. Давайте определим, появился ли элемент.
Прежде чем работать с элементом, вы можете сначала определить статус элемента. Определение рабочего состояния элементов также можно использовать для утверждений.
Метод оценки, вызываемый объектом страницы, передает параметр позиционирования селектора.
Метод оценки, вызываемый объектом локатора
Как определить дескрипторы элементов
Дескриптор элемента (element_handle) — это ElementHandle, возвращаемый вызовом метода page.query_selector(), который обычно не используется. Тоже не рекомендуется.
Брат Хун использует поле ввода поиска на домашней странице Ду Ньянга в качестве примера, чтобы определить, может ли поле ввода поиска вводить контент, а затем использует JavaScript, чтобы добавить атрибут «только для чтения», чтобы еще раз определить, можно ли вводить контент. Вы правильно прочитали, это так. как это работает.
1. Посетите домашнюю страницу DuNiang
2. Найдите поле ввода поиска и определите, работоспособно ли оно (введите содержимое поиска).
3. Добавьте атрибут «только для чтения» в поле ввода поиска с помощью JavaScript.
4. Еще раз определите, работоспособно ли поле ввода поиска (введите содержимое поиска)
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2024-05-17
@author: Пекин-Хонге
Публичный аккаунт: Beijing Hongge (поиск WeChat: Beijing Hongge, фокус на Брат Хун, разблокируй больше тестовых предметов заранее! )
Project:Первый взгляд на серию «Последний релиз» — Автоматическое тестирование Python+Playwright-62 — Определение работоспособности элемента
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/")
page.wait_for_timeout(1000)
searchInputBox = page.locator("#kw")
if searchInputBox.is_enabled():
print("Вы можете ввести контент в поле поиска на домашней странице Baidu!")
# Добавьте атрибут отключения в поле ввода поиска с помощью JavaScript.
js = "document.getElementById('kw').setAttribute('disabled', '')";
page.evaluate(js)
searchInputBox1 = page.locator("//*[@id='kw']")
# Еще раз оцените поле ввода поиска. работоспособно? (введите текст поиска)
if ~searchInputBox1.is_enabled():
print("Вы не можете вводить контент в поле поиска на домашней странице Baidu!")
page.wait_for_timeout(1000)
print("browser will be close")
page.close()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вы увидите вывод консоли, как показано ниже:
2. Действия браузера на компьютере после запуска кода. Как показано ниже:
3. Возможно, вы, ребята, не заметили, как брат Хун нажал на поле ввода во время записи экрана.,Добавить неработоспособные атрибуты в поля ввода с помощью JavaScript,Брат Хун будет здесь демонстрировать.,Если вы все равно вводите контент в поле ввода, будет сообщено о следующей ошибке:element not interactable(Элементы не интерактивны)。Как показано ниже:
4. Конечно, вы также можете использовать F12, чтобы проверить, что элемент добавлен с неработоспособными атрибутами, как показано на рисунке ниже:
Хорошо, сегодня уже поздно, брат Хун поделится этим здесь, спасибо за ваше терпение при чтении.
Если вы не хотите его использовать или чувствуете, что встроенный API Selenium не соответствует вашим требованиям, вы также можете определить API в соответствии со своими потребностями, а затем вызвать его.
# Пользовательский метод для определения существования элемента страницы
def is_element_present(page, selector):
"""
Определить, существует ли на странице элемент, указанный селектором.
:param page: Объект Страница драматурга
:param selector: CSS-селекторы для выбора элементов
:return: Возвращает True, если элемент существует, в противном случае — False.
"""
try:
# Попробуйте получить элемент
page.wait_for_selector(selector, timeout=5000) # Подождите появления элемента с таймаутом 5 секунд.
return True
except Exception as e:
# Если исключение возникает во время ожидания элемента или получения элемента, элемент не существует.
return False
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2024-05-17
@author: Пекин-Хонге
Публичный аккаунт: Beijing Hongge (поиск WeChat: Beijing Hongge, фокус на Брат Хун, разблокируй больше тестовых предметов заранее! )
Проект: Первый обзор серии «Latest Release» — Python+автоматизация драматурга тест-63 - Определить, работоспособен ли элемент
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
# Пользовательский метод для определения существования элемента страницы
def is_element_present(page, selector):
"""
Определить, существует ли на странице элемент, указанный селектором.
:param page: Объект Страница драматурга
:param selector: CSS-селекторы для выбора элементов
:return: Возвращает True, если элемент существует, в противном случае — False.
"""
try:
# Попробуйте получить элемент
page.wait_for_selector(selector, timeout=5000) # Подождите появления элемента с таймаутом 5 секунд.
return True
except Exception as e:
# Если исключение возникает во время ожидания элемента или получения элемента, элемент не существует.
return False
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://www.baidu.com/")
page.wait_for_timeout(1000)
if is_element_present(page,"input#kw"):
searchInputBox = page.locator("#kw")
'''Определите, доступен ли объект переменной searchInputBox. Если оно доступно, введите «Поле ввода поиска на домашней странице Baidu успешно найдено!» '''
if searchInputBox.is_enabled():
searchInputBox.type("Поле ввода поиска на домашней странице Baidu успешно найдено!")
else:
print("Элемент поля ввода на странице не найден!")
page.wait_for_timeout(1000)
print("browser will be close")
page.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вы увидите вывод консоли, как показано ниже:
2. Действия браузера на компьютере после запуска кода. Как показано ниже: