существовать playwright.chromium.launch()
входящий proxy
Параметры достаточны. Пример кода выглядит следующим образом:
from playwright.sync_api import sync_playwright
proxy = {'server': 'http:/127.0.0.1:8080'}
def run():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy=proxy)
page = browser.new_page()
page.goto('https://www.baidu.com')
title = page.title()
if «Байду» in title:
print("Откройте Baidu успешно")
else:
print("Не удалось открыть Baidu")
browser.close()
run()
from playwright.async_api import async_playwright
import asyncio
proxy = {'server': 'http:/127.0.0.1:8080'}
async def run():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False, proxy=proxy)
page = await browser.new_page()
await page.goto('https://www.baidu.com')
title = await page.title()
if «Байду» in title:
print("Откройте Baidu успешно")
else:
print("Не удалось открыть Baidu")
await browser.close()
asyncio.get_event_loop().run_until_complete(run())
async/await
грамматикаВообще говоря, для современных систем модели асинхронного программирования станут основной тенденцией. Но синхронизация существования определенных сцен не менее проста в использовании. Выбор следует сопоставлять с конкретными потребностями.
Это вводный пример. Что касается значения каждого предложения, просто прочитайте мои комментарии. Пример кода выглядит следующим образом:
import re
from playwright.sync_api import Page, expect, sync_playwright
proxy = {'server': 'http://127.0.0.1:8080'}
def test_baidu():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy=proxy)
page = browser.new_page()
# Перейти на страницу Baidu
page.goto("https://www.baidu.com/")
# Нажмите на поле ввода
page.locator("#kw").click()
# Введите селен в поле ввода
page.locator("#kw").fill("selenium")
# Нажмите кнопку запроса Baidu.
page.get_by_role("button", name="Baidu").click()
# Проверьте, введен ли селен в поле ввода
expect(page.locator("#kw")).to_have_value("selenium")
# Убедитесь, что на странице присутствует текст «Все также существуют»
ожидаем(page.locator("#content_left")).to_contain_text("Все тоже ищут")
# Выйти из браузера
browser.close()
Уведомление:Необходимо использовать как тестовые классы, так и тестовые методы.test_ Именование префиксов
Это список распространенных операций Playwright. Обратите внимание, что существует множество других. Обязательно посетите раздел API локатора, чтобы узнать об этом больше.
действовать | описывать |
---|---|
locator.check() | Установите флажок ввода |
locator.click() | щелкните элемент |
locator.uncheck() | Отмена Установите флажок ввода |
locator.hover() | Наведите курсор на существующий элемент |
locator.fill() | Заполните поля формы и введите текст |
locator.focus() | элемент фокуса |
locator.press() | нажать одну клавишу |
locator.set_input_files() | Выберите файлы для загрузки |
locator.select_option() | Выберите вариант из раскрывающегося меню |
утверждение | описывать |
---|---|
expect(locator).to_be_checked() | Флажок установлен |
expect(locator).to_be_enabled() | Управление включено |
expect(locator).to_be_visible() | Элемент виден |
expect(locator).to_contain_text() | Элемент содержит текст |
expect(locator).to_have_attribute() | Элементы имеют атрибуты |
expect(locator).to_have_count() | Список элементов имеет длину |
expect(locator).to_have_text() | текст, соответствующий элементу |
expect(locator).to_have_value() | Входной элемент имеет значение |
expect(page).to_have_title() | На странице есть заголовок |
expect(page).to_have_url() | На странице есть URL |
Пример кода:
import pytest
from playwright.sync_api import Page, expect, sync_playwright
@pytest.fixture(scope="function", autouse=True)
def before_each_after_each(page: Page):
print("before the test runs")
page.goto("https://www.baidu.com/")
yield
print("after the test runs")
def test_main_navigation(page: Page):
page.locator("#kw").fill("Цзюццзянь Блог Парк")
page.get_by_role("button", name="Baidu").click()
view(page.locator("#content_left")).to_contain_text("поиск - Блог Парк")
Объяснение кода: