плейрайт питон, Хромиум не поддерживает загрузку mp4 файлов?

Вопрос или проблема

Я пытался загрузить 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. Давайте исследуем возможные причины этой проблемы и предложим пути её решения.

Поведение браузера

  1. Поддержка форматов:

    • Chromium в общем случае поддерживает формат MP4 для видеофайлов. Однако, могут возникать проблемы с конкретной реализацией, конфигурацией или политиками безопасности.
  2. Политики безопасности:

    • Убедитесь, что ваша веб-приложение не применяет строгие политики безопасности, такие как CORS (Cross-Origin Resource Sharing), которые могут влиять на работу с файлами.
  3. Элементы управления загрузкой:

    • Проверьте, поддерживается ли элемент управления загрузкой на вашей странице для файлов размером более определенной величины. Иногда веб-приложения имеют ограничения на типы и размеры загружаемых файлов.

Анализ кода

Ваш код выглядит хорошо структурированным, но давайте уделим внимание некоторым деталям:

  1. Путь к файлу:

    • Убедитесь, что путь к 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").
  2. Логи и отладка:

    • Добавьте отладочные логи, чтобы понять, на каком этапе происходит сбой. Например, вы можете записать успешный ответ после попытки загрузки:
      try:
       self.upload_videos_files_process()
       print("Upload successful")
      except Exception as e:
       print(f"Upload failed: {e}")
  3. Проверка на ошибки:

    • Используйте инструменты разработчика (DevTools) в браузере, чтобы отследить сетевые запросы и ошибки, происходящие на уровне HTTP. Это могло бы дать вам представление о том, почему загружается файл MP4.

Альтернативы

Если проблема с загрузкой файлов MP4 в Chromium не поддается диагностике, рассмотрите возможность:

  • Использования другого браузера: В тестовых сценариях можно рассмотреть использование Firefox или Chrome, если они не демонстрируют подобных проблем и могут быть приемлемыми для вашей задачи по загрузке.

  • Изменения конфигурации: Вы можете попробовать запускать Chromium с другими параметрами, исключая, например, антивирусное ПО или расширения, которые могут блокировать загрузки.

Заключение

Chromium, как правило, поддерживает форматы файлов MP4, но проблемы могут возникать из-за различных факторов, включая политики безопасности, ошибки в коде или ограничения самого веб-приложения. Рекомендуется продолжать тестирование с отладкой и внимательным анализом сообщений об ошибках, что поможет вам выявить и устранить причину неполадок.

Если проблема не решена, вы можете обратиться к сообществу Playwright или документам для получения дополнительных указаний или обновлений, так как это может быть связано с конкретной версией библиотеки или браузера.

Оцените материал
Добавить комментарий

Капча загружается...