Senior
შემთხვევითი იმპორტი დროიდან ძილი playwright.sync_api-დან import sync_playwright def test_1(): მოლოდინი = 12 ბრაუზერი = sync_playwright().start().chromium.launch(headless=False) გვერდი = ბრაუზერი.new_page() def handle_route(route): route.fulfill( status=200, content_type="application/json", json={"symbols": [{"symbol": "SPY", "description": "ტესტის მიზნები"}]} ) გვერდი.route("**/symbol_search/**", handle_route) გვერდი.goto("[link] ძილი(მოლოდინი) l = გვერდი.locator("//*[ @id='header-toolbar-symbol-search']/div") l.click() ძილი(3) სიმბოლოები = ["AAPL", "BTCUSD", "TSLA", "NVDA"] სიმბოლო = random.choice(სიმბოლოები) გვერდი.get_by_placeholder("Search").fill(სიმბოლო) გვერდი.keyboard.press("Enter") return გვერდი def test_2(): გვერდი = test_1() ძილი(5) გვერდი.locator("//*[ @id='header-toolbar-user-menu']/div[2]/div/div[2]/div[1]/div/div[3]/button").click() გვერდი.locator("//span[contains(text(), 'Sign in')]") ძილი(7) გვერდი.locator("//span[contains(text(), 'Sign in')]").click()
sobes.tech AI
პასუხი AI-სგან
В представленном коде используется Playwright для автоматизации браузера с синхронным API. Основные моменты:
- Создается браузер Chromium в режиме с UI (headless=False).
- Настраивается перехват запросов к URL с шаблоном
**/symbol_search/**, на которые возвращается фиктивный JSON с одним символом "SPY". - Открывается страница по указанному URL (в коде
[link]— нужно заменить на реальный). - После ожидания кликается элемент с локатором по XPath, затем в поле с placeholder "Search" вводится случайный тикер из списка и нажимается Enter.
Вторая функция test_2 вызывает test_1, ждет, затем кликает по элементам меню пользователя, в том числе по кнопке "Sign in".
Пример использования маршрутизации (route) в Playwright позволяет подменять ответы сервера для тестирования UI без реального backend. Это удобно для изоляции тестов и контроля данных.
Если нужно улучшить код:
- Лучше использовать ожидания Playwright (
page.wait_for_selector) вместоsleepдля надежности. - Локаторы по XPath можно заменить на более стабильные селекторы.
Пример замены sleep на ожидание:
page.locator("//*[ @id='header-toolbar-symbol-search']/div").click()
page.wait_for_selector("input[placeholder='Search']")
Это повысит стабильность тестов.