Вопрос или проблема
Я пытался загрузить mp4 файл, но это не сработало. Когда я попытался изменить файл с mp4 на mp3, это сработало. Я также пробовал использовать браузеры Firefox и Chrome для загрузки mp4 файлов, и это сработало. Однако при использовании Chromium mp4 файл не загружается и не отображается на экране. Разве Chromium не поддерживает загрузку mp4 файлов?
Это мой код для основного файла.
from playwright.sync_api import sync_playwright
from playwright.sync_api import expect
from PageObjectModel.Pages.UserLogin import Login
from PageObjectModel.Pages.VideosFilesUpload import VideosFilesUpload
from constant import STAGING
import json
import os
expect.set_options(timeout=1800000)
def main(playwright):
user_data_dir="./prefs"
pref_file_path = user_data_dir + '/Default/Preferences'
os.makedirs(os.path.dirname(pref_file_path), exist_ok=True)
if not os.path.exists(pref_file_path):
with open(pref_file_path, 'w') as pref_file:
json.dump({}, pref_file)
with open(pref_file_path, 'r') as pref_file:
try:
data = json.load(pref_file)
except json.JSONDecodeError:
data = {} # Инициализировать словарь данных
data['devtools'] = {
'preferences': {
'network_log.preserve-log': True,
'network_log.filter': 'Fetch/XHR'
}
}
with open(pref_file_path, 'w') as pref_file:
json.dump(data, pref_file)
browser = playwright.chromium.launch_persistent_context(
user_data_dir,
headless=False,
no_viewport=True,
args=[
'--auto-open-devtools-for-tabs',
'--start-maximized'
]
)
page = browser.new_page()
page.goto(STAGING) #введите URL!
#
Login(page)
VideosFilesUpload(page)
print("ВЕСЬ ТЕСТ ЗАВЕРШЕН")
with sync_playwright() as playwright:
main(playwright)
Это мой код для файла VideosFilesUpload
(Класс).
from playwright.sync_api import expect
import time
expect.set_options(timeout=1800000)
class VideosFilesUpload():
def __init__(self,page):
self.page = page
self.final_videos_files_upload_execution()
def homepage_click_attachment_icon(self):
open_attachment = self.page.locator("#attachments-button-home")
expect(open_attachment).to_be_visible(timeout=1800000)
expect(open_attachment).to_be_enabled(timeout=1800000)
open_attachment.focus()
open_attachment.click(timeout=1800000)
def navigate_to_transcoder(self):
click_to_redirect_transcoder = self.page.locator("#upload-video-button-home")
expect(click_to_redirect_transcoder).to_be_visible(timeout=1800000)
expect(click_to_redirect_transcoder).to_be_enabled(timeout=1800000)
expect(click_to_redirect_transcoder).to_have_text("Видео/Аудио" , timeout=1800000)
click_to_redirect_transcoder.focus()
click_to_redirect_transcoder.click(timeout=1800000)
def upload_videos_files_process(self):
upload_process = self.page.locator("#transcoder-input-file-upload")
upload_process.set_input_files("C:\\Users\\Jerome\\Desktop\\Benchmarking\Markets in 3 Minutes_ The Pound's World-Beating Run 3.13.mp4")
expect(upload_process).to_be_attached(timeout=1800000)
def transcoder_click_upload_button(self):
click_upload_button = self.page.locator("#video-upload-btn-video-file")
expect(click_upload_button).to_be_visible(timeout=1800000)
expect(click_upload_button).to_be_enabled(timeout=1800000)
expect(click_upload_button).to_have_text("Загрузить" , timeout=1800000)
click_upload_button.focus()
click_upload_button.click(timeout=1800000)
def final_videos_files_upload_execution(self):
self.homepage_click_attachment_icon()
self.navigate_to_transcoder()
self.upload_videos_files_process()
self.transcoder_click_upload_button()
print("тест видео завершен".upper().strip())
Ответ или решение
Проблема с загрузкой файлов MP4 в Chromium с использованием Playwright Python
Вы столкнулись с ситуацией, когда попытка загрузки файлов MP4 на веб-странице с использованием библиотеки Playwright для Python не увенчалась успехом в браузере Chromium, в то время как те же файлы успешно загружаются в браузерах Firefox и Chrome. Давайте исследуем возможные причины этой проблемы и предложим пути её решения.
Поведение браузера
-
Поддержка форматов:
- Chromium в общем случае поддерживает формат MP4 для видеофайлов. Однако, могут возникать проблемы с конкретной реализацией, конфигурацией или политиками безопасности.
-
Политики безопасности:
- Убедитесь, что ваша веб-приложение не применяет строгие политики безопасности, такие как CORS (Cross-Origin Resource Sharing), которые могут влиять на работу с файлами.
-
Элементы управления загрузкой:
- Проверьте, поддерживается ли элемент управления загрузкой на вашей странице для файлов размером более определенной величины. Иногда веб-приложения имеют ограничения на типы и размеры загружаемых файлов.
Анализ кода
Ваш код выглядит хорошо структурированным, но давайте уделим внимание некоторым деталям:
-
Путь к файлу:
- Убедитесь, что путь к MP4 файлу указан корректно (
C:\\Users\\Jerome\\Desktop\\Benchmarking\\Markets in 3 Minutes_ The Pound's World-Beating Run 3.13.mp4
). Обратите внимание, что в Python обратные слеши (\
) иногда могут вызывать ошибки, если не прописаны верно. Рекомендуется использовать необработанные строки (r"C:\Users\Jerome\Desktop\Benchmarking\Markets in 3 Minutes_ The Pound's World-Beating Run 3.13.mp4"
).
- Убедитесь, что путь к MP4 файлу указан корректно (
-
Логи и отладка:
- Добавьте отладочные логи, чтобы понять, на каком этапе происходит сбой. Например, вы можете записать успешный ответ после попытки загрузки:
try: self.upload_videos_files_process() print("Upload successful") except Exception as e: print(f"Upload failed: {e}")
- Добавьте отладочные логи, чтобы понять, на каком этапе происходит сбой. Например, вы можете записать успешный ответ после попытки загрузки:
-
Проверка на ошибки:
- Используйте инструменты разработчика (DevTools) в браузере, чтобы отследить сетевые запросы и ошибки, происходящие на уровне HTTP. Это могло бы дать вам представление о том, почему загружается файл MP4.
Альтернативы
Если проблема с загрузкой файлов MP4 в Chromium не поддается диагностике, рассмотрите возможность:
-
Использования другого браузера: В тестовых сценариях можно рассмотреть использование Firefox или Chrome, если они не демонстрируют подобных проблем и могут быть приемлемыми для вашей задачи по загрузке.
-
Изменения конфигурации: Вы можете попробовать запускать Chromium с другими параметрами, исключая, например, антивирусное ПО или расширения, которые могут блокировать загрузки.
Заключение
Chromium, как правило, поддерживает форматы файлов MP4, но проблемы могут возникать из-за различных факторов, включая политики безопасности, ошибки в коде или ограничения самого веб-приложения. Рекомендуется продолжать тестирование с отладкой и внимательным анализом сообщений об ошибках, что поможет вам выявить и устранить причину неполадок.
Если проблема не решена, вы можете обратиться к сообществу Playwright или документам для получения дополнительных указаний или обновлений, так как это может быть связано с конкретной версией библиотеки или браузера.