В реальной работе, когда мы выполняем веб-автоматизацию, загрузка файлов является очень распространенной операцией, такой как загрузка аватаров пользователей, загрузка данных удостоверения личности и т. д. Итак, брат Хун планирует объяснять и делиться загруженными файлами в соответствии с их классификацией.
Playwright — это современный инструмент автоматического тестирования, который поддерживает несколько браузеров и операционных систем и помогает разработчикам и тестировщикам легко создавать и запускать надежные комплексные тесты. Помимо возможностей тестирования, Playwright также предоставляет ряд утилит и API, включая возможности загрузки и скачивания файлов. Эти функции могут помочь пользователям моделировать сценарии, в которых пользователи загружают или скачивают файлы, и проверять, что эти операции выполняются должным образом. В этой статье мы рассмотрим, как реализовать загрузку файлов в Playwright, а также предоставим пример кода и лучшие практики.
Например: функция загрузки на платформе предоставит шаблон (например, Excel, CSV). На данный момент нам нужно загрузить этот шаблон, изменить его, а затем загрузить. Как тестировщику, нам необходимо проверить, существует ли он. был загружен локально.
Загрузить файлы Представляем официальноеAPIАдрес документа:Page | Playwright Python[
](https://playwright.dev/python/docs/api/class-locator#locator-set-input-files)
Если у вас нет ввода элемента ввода под рукой (это динамически созданный невход), вы можете обработать page.on("filechooser")
событие или используйте соответствующий метод ожидания в своем действии:
with page.expect_file_chooser() as fc_info:
page.get_by_label("Upload file").click()
file_chooser = fc_info.value
file_chooser.set_files("myfile.pdf")
Несколько методов работы
Устанавливает значение входного файла, связанного с этим селектором. Если некоторые из этих путей к файлам являются относительными путями, они будут разрешены относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы.
file_chooser.set_files(files)
file_chooser.set_files(files, **kwargs)
несколько параметров
Это не поле ввода, но необходимо щелкнуть поле файла (операция, которую невозможно реализовать в Selenium).
Вы можете использовать page.expect_file_chooser() для прослушивания всплывающего окна и ввода пути к файлу во всплывающем окне. Код выглядит следующим образом:
with page.expect_file_chooser() as fc_info:
page.get_by_label("Выбрать файл").click()
page.pause()
file_chooser = fc_info.value
file_chooser.set_files(path)
Во время работы вы не заметите появления всплывающего окна с параметрами файла.
Прежде всего, нужно различать типы кнопок загрузки, которые условно можно разделить на два типа: один — поле ввода, а другой — более сложный. Он реализуется через js, flash и т. д. и метку. не является вводом.
Существует два сценария загрузки файлов: загрузка с контролем ввода и загрузка без контроля ввода. В большинстве случаев для загрузки файлов используются элементы управления вводом, и лишь в очень немногих случаях для загрузки файлов используются пользовательские файлы, не являющиеся входными. Сегодня статья брата Хонга используется для введения элементов управления без ввода при загрузке файлов.
В веб-системе некоторые функции загрузки файлов являются нестандартными функциями загрузки файлов (загрузка без контроля ввода). Что такое нестандартные функции загрузки файлов, представленные на рисунке ниже? ниже:
На рисунке выше исходный код HTML, соответствующий кнопке файла, помечен как img. Этот элемент представляет собой нестандартную функцию загрузки.
Брат Хонг находится на этом сайте:https://www.jq22.com/ Я нашел демо-версию для демонстрации.
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2024-04-27
@author: Пекин-Хонге
Публичный аккаунт: Beijing Hongge (поиск WeChat: Beijing Hongge, фокус на Брат Хун, разблокируй больше тестовых предметов заранее! )
Project: Знакомство с серией «Последний выпуск» — Python+автоматизация драматургатест-54- Загрузить файлы(подробный Учебное пособие)
'''
# 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.jq22.com/demo/preview201801282117/")
page.wait_for_timeout(100)
with page.expect_file_chooser() as fc_info:
page.locator("//html/body/div/div/div[1]/img[1]").click() # Нажмите кнопку «Загрузить вложение».
# page.pause()
file_chooser = fc_info.value
file_chooser.set_files("C:/Users/Administrator/Desktop/bjhg.jpg") # Загрузить файлы
# Чтобы четко видеть загруженные изображения, брат Хун увеличил время ожидания.
page.wait_for_timeout(10000)
print("browser will be close");
page.close()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вы увидите вывод консоли, как показано ниже:
2. Действия браузера на компьютере после запуска кода. Как показано ниже:
Хорошо, сегодня еще не очень рано. Брат Хонг объяснит и поделится здесь сегодня. Спасибо за ваше терпение в чтении. В следующей статье будет объяснено, как элементы управления без ввода загружают файлы.