Метод new_page в BrowserContext не работает должным образом в Playwright.Python

Программы на Python
Anonymous
Метод new_page в BrowserContext не работает должным образом в Playwright.

Сообщение Anonymous »

Я использую драматург с pytest. Вот содержимое моего файла coftest.py и файла с тестами test_keplr.py. По какой-то причине метод new_page работает так, как ожидалось в приспособлении context_use_args_async, но не работает везде, кроме этого приспособления.
Когда программа оценивает строку с помощью context.new_page, она открывает новую страницу, но бесконечно ждать этой сопрограммы (метода).
conftest.py

Код: Выделить всё

import pytest
import os
import zipfile
from pathlib import Path
from dotenv import load_dotenv
import pytest_asyncio
from playwright.async_api import async_playwright, Browser, Playwright, BrowserContext

load_dotenv()

@pytest.fixture(scope='session')
def extension_dirs(tmp_path_factory) -> list[str]:
extensions_path = Path(os.getenv('TEST_EXTENSION_PATH'))

temp_dir = tmp_path_factory.mktemp('extensions')

extension_zips = [
path for path in extensions_path.iterdir() if str(path).endswith('.zip')
]

extension_dirs = []

for path in extension_zips:
with zipfile.ZipFile(path, 'r') as zip_ref:
extension_dir = temp_dir / path.name.replace('.zip', '')
zip_ref.extractall(extension_dir)
extension_dirs.append(str(extension_dir))

return extension_dirs

@pytest_asyncio.fixture(scope='session')
async def playwright_async() -> Playwright:
playwright = await async_playwright().start()
yield playwright
await playwright.stop()

@pytest_asyncio.fixture(scope='session')
async def browser_async(playwright_async) -> Browser:
chromium = playwright_async.chromium
browser = await chromium.launch(headless=False, channel='chrome')
yield browser
await browser.close()

@pytest_asyncio.fixture(scope='session')
async def context_async(browser_async) -> BrowserContext:
context = await browser_async.new_context()
await context.new_page()
yield context
await context.close()

@pytest_asyncio.fixture(scope='session')
async def browser_use_args_async(playwright_async, extension_dirs) -> Browser:
extensions_str = ','.join(extension_dirs)

browser = await playwright_async.chromium.launch(
headless=False,
args=[
f'--disable-extensions-except={extensions_str}',
f'--load-extension={extensions_str}'
]
)
yield browser
await browser.close()

@pytest_asyncio.fixture(scope='session')
async def context_use_args_async(browser_use_args_async):
context = await browser_use_args_async.new_context()
yield context
await context.close()

test_keplr.py

Код: Выделить всё

import pytest
from playwright.async_api import BrowserContext
from playdegen.async_api.abc import BrowserExtension
from playdegen.async_api.wallets.keplr import Keplr

@pytest.mark.asyncio
async def test_sign_up(context_use_args_async: BrowserContext) -> None:
page = await context_use_args_async.new_page()
...
Я пробовал использовать разные браузеры (хром и хром), но это не помогло.


Подробнее здесь: https://stackoverflow.com/questions/787 ... playwright

Вернуться в «Python»