Frame
В любой момент времени страница предоставляет текущее дерево фреймов через методы page.main_frame и frame.child_frames.
Жизненный цикл объекта Frame контролируется тремя событиями, отправляемыми на объекте страницы:
- page.on("frameattached") - срабатывает, когда фрейм присоединяется к странице. Фрейм может быть присоединен к странице только один раз.
- page.on("framenavigated") - срабатывает, когда фрейм совершает навигацию на другой URL.
- page.on("framedetached") - срабатывает, когда фрейм отсоединяется от страницы. Фрейм может быть отсоединен от страницы только один раз.
Пример вывода дерева фреймов:
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
firefox = playwright.firefox
browser = firefox.launch()
page = browser.new_page()
page.goto("https://www.theverge.com")
dump_frame_tree(page.main_frame, "")
browser.close()
def dump_frame_tree(frame, indent):
print(indent + frame.name + '@' + frame.url)
for child in frame.child_frames:
dump_frame_tree(child, indent + " ")
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
firefox = playwright.firefox
browser = await firefox.launch()
page = await browser.new_page()
await page.goto("https://www.theverge.com")
dump_frame_tree(page.main_frame, "")
await browser.close()
def dump_frame_tree(frame, indent):
print(indent + frame.name + '@' + frame.url)
for child in frame.child_frames:
dump_frame_tree(child, indent + " ")
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Методы
add_script_tag
Added before v1.9Возвращает добавленный тег, когда срабатывает onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Добавляет тег <script> на страницу с нужным URL или содержимым.
Использование
frame.add_script_tag()
frame.add_script_tag(**kwargs)
Аргументы
-
Сырой JavaScript-контент для внедрения в фрейм.
-
pathUnion[str, pathlib.Path] (optional)#Путь к JavaScript-файлу для внедрения в фрейм. Если
pathявляется относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта для добавления.
Возвращает
add_style_tag
Added before v1.9Возвращает добавленный тег, когда срабатывает onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Добавляет тег <link rel="stylesheet"> на страницу с нужным URL или тег <style type="text/css"> с содержимым.
Использование
frame.add_style_tag()
frame.add_style_tag(**kwargs)
Аргументы
-
Сырой CSS-контент для внедрения в фрейм.
-
pathUnion[str, pathlib.Path] (optional)#Путь к CSS-файлу для внедрения в фрейм. Если
pathявляется относительным путем, то он разрешается относительно текущей рабочей директории. -
URL тега
<link>.
Возвращает
content
Added before v1.9Получает полный HTML-контент фрейма, включая doctype.
Использование
frame.content()
Возвращает
drag_and_drop
Added in: v1.13Использование
frame.drag_and_drop(source, target)
frame.drag_and_drop(source, target, **kwargs)
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Нужно ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (optional)#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
source_positionDict (optional) Added in: v1.14#Кликает на элементе источника в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
target_positionDict (optional) Added in: v1.14#Сбрасывает на элементе цели в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
evaluate
Added before v1.9Возвращает возвращаемое значение expression.
Если функция, переданная в frame.evaluate(), возвращает Promise, то frame.evaluate() будет ждать разрешения промиса и вернет его значение.
Если функция, переданная в frame.evaluate(), возвращает значение, не являющееся Serializable, то frame.evaluate() возвращает undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON: -0, NaN, Infinity, -Infinity.
Использование
- Sync
- Async
result = frame.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # prints "56"
result = await frame.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # prints "56"
Вместо функции также можно передать строку.
- Sync
- Async
print(frame.evaluate("1 + 2")) # prints "3"
x = 10
print(frame.evaluate(f"1 + {x}")) # prints "11"
print(await frame.evaluate("1 + 2")) # prints "3"
x = 10
print(await frame.evaluate(f"1 + {x}")) # prints "11"
Экземпляры ElementHandle могут быть переданы в качестве аргумента в frame.evaluate():
- Sync
- Async
body_handle = frame.evaluate("document.body")
html = frame.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
body_handle.dispose()
body_handle = await frame.evaluate("document.body")
html = await frame.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
await body_handle.dispose()
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
argEvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
Возвращает
evaluate_handle
Added before v1.9Возвращает возвращаемое значение expression как JSHandle.
Единственное отличие между frame.evaluate() и frame.evaluate_handle() заключается в том, что frame.evaluate_handle() возвращает JSHandle.
Если функция, переданная в frame.evaluate_handle(), возвращает Promise, то frame.evaluate_handle() будет ждать разрешения промиса и вернет его значение.
Использование
- Sync
- Async
a_window_handle = frame.evaluate_handle("Promise.resolve(window)")
a_window_handle # handle for the window object.
a_window_handle = await frame.evaluate_handle("Promise.resolve(window)")
a_window_handle # handle for the window object.
Вместо функции также можно передать строку.
- Sync
- Async
a_handle = page.evaluate_handle("document") # handle for the "document"
a_handle = await page.evaluate_handle("document") # handle for the "document"
Экземпляры JSHandle могут быть переданы в качестве аргумента в frame.evaluate_handle():
- Sync
- Async
a_handle = page.evaluate_handle("document.body")
result_handle = page.evaluate_handle("body => body.innerHTML", a_handle)
print(result_handle.json_value())
result_handle.dispose()
a_handle = await page.evaluate_handle("document.body")
result_handle = await page.evaluate_handle("body => body.innerHTML", a_handle)
print(await result_handle.json_value())
await result_handle.dispose()
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
argEvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
Возвращает
frame_element
Added before v1.9Возвращает дескриптор элемента frame или iframe, который соответствует данному фрейму.
Это обратная операция для element_handle.content_frame(). Обратите внимание, что возвращаемый дескриптор фактически принадлежит родительскому фрейму.
Этот метод выбрасывает ошибку, если фрейм был отсоединен до того, как frameElement() вернет результат.
Использование
- Sync
- Async
frame_element = frame.frame_element()
content_frame = frame_element.content_frame()
assert frame == content_frame
frame_element = await frame.frame_element()
content_frame = await frame_element.content_frame()
assert frame == content_frame
Возвращает
frame_locator
Added in: v1.17При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame, например <iframe id="my-frame">:
- Sync
- Async
locator = frame.frame_locator("#my-iframe").get_by_text("Submit")
locator.click()
locator = frame.frame_locator("#my-iframe").get_by_text("Submit")
await locator.click()
Аргументы
Возвращает
get_by_alt_text
Added in: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
- Sync
- Async
page.get_by_alt_text("Playwright logo").click()
await page.get_by_alt_text("Playwright logo").click()
Аргументы
-
Текст для поиска элемента.
-
Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.
Возвращает
get_by_label
Added in: v1.27Позволяет находить элементы ввода по тексту связанного элемента <label> или элемента aria-labelledby, или по атрибуту aria-label.
Использование
Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
- Sync
- Async
page.get_by_label("Username").fill("john")
page.get_by_label("Password").fill("secret")
await page.get_by_label("Username").fill("john")
await page.get_by_label("Password").fill("secret")
Аргументы
-
Текст для поиска элемента.
-
Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.
Возвращает
get_by_placeholder
Added in: v1.27Позволяет находить элементы ввода по тексту-заполнителю (placeholder).
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
- Sync
- Async
page.get_by_placeholder("name@example.com").fill("playwright@microsoft.com")
await page.get_by_placeholder("name@example.com").fill("playwright@microsoft.com")
Аргументы
-
Текст для поиска элемента.
-
Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.
Возвращает
get_by_role
Added in: v1.27Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.
Использование
Рассмотрим следующую структуру DOM.
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
Вы можете найти каждый элемент по его неявной роли:
- Sync
- Async
expect(page.get_by_role("heading", name="Sign up")).to_be_visible()
page.get_by_role("checkbox", name="Subscribe").check()
page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()
await expect(page.get_by_role("heading", name="Sign up")).to_be_visible()
await page.get_by_role("checkbox", name="Subscribe").check()
await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()
Аргументы
-
role"alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem"#Требуемая ARIA роль.
-
Атрибут, который обычно устанавливается с помощью
aria-checkedили нативных<input type=checkbox>контролов.Узнайте больше о
aria-checked. -
Атрибут, который обычно устанавливается с помощью
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется через иерархию DOM. Узнайте больше оaria-disabled. -
exactbool (optional) Added in: v1.28#Совпадает ли name точно: с учетом регистра и всей строки. По умолчанию false. Игнорируется, когда name является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.
-
Атрибут, который обычно устанавливается с помощью
aria-expanded.Узнайте больше о
aria-expanded. -
include_hiddenbool (optional)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden. -
Числовой атрибут, который обычно присутствует для ролей
heading,listitem,row,treeitem, с значениями по умолчанию для элементов<h1>-<h6>.Узнайте больше о
aria-level. -
namestr | Pattern (optional)#Опция для сопоставления доступного имени. По умолчанию, сопоставление не учитывает регистр и ищет подстроку, используйте exact для управления этим поведением.
Узнайте больше о доступном имени.
-
Атрибут, который обычно устанавливается с помощью
aria-pressed.Узнайте больше о
aria-pressed. -
Атрибут, который обычно устанавливается с помощью
aria-selected.Узнайте больше о
aria-selected.
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о рекомендациях ARIA.
Многие HTML элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Рекомендации ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role и/или aria-* атрибуты на значения по умолчанию.
get_by_test_id
Added in: v1.27Находит элемент по тестовому идентификатору.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его тестовому идентификатору:
- Sync
- Async
page.get_by_test_id("directions").click()
await page.get_by_test_id("directions").click()
Аргументы
Возвращает
Детали
По умолчанию, атрибут data-testid используется как тестовый идентификатор. Используйте selectors.set_test_id_attribute() для настройки другого атрибута тестового идентификатора, если это необходимо.
get_by_text
Added in: v1.27Позволяет находить элементы, содержащие заданный текст.
См. также locator.filter(), который позволяет сопоставлять по другим критериям, таким как доступная роль, а затем фильтровать по содержимому текста.
Использование
Рассмотрим следующую структуру DOM:
<div>Hello <span>world</span></div>
<div>Hello</div>
Вы можете находить элементы по подстроке текста, точной строке или регулярному выражению:
- Sync
- Async
# Соответствует <span>
page.get_by_text("world")
# Соответствует первому <div>
page.get_by_text("Hello world")
# Соответствует второму <div>
page.get_by_text("Hello", exact=True)
# Соответствует обоим <div>
page.get_by_text(re.compile("Hello"))
# Соответствует второму <div>
page.get_by_text(re.compile("^hello$", re.IGNORECASE))
# Соответствует <span>
page.get_by_text("world")
# Соответствует первому <div>
page.get_by_text("Hello world")
# Соответствует второму <div>
page.get_by_text("Hello", exact=True)
# Соответствует обоим <div>
page.get_by_text(re.compile("Hello"))
# Соответствует второму <div>
page.get_by_text(re.compile("^hello$", re.IGNORECASE))
Аргументы
-
Текст для поиска элемента.
-
Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.
Возвращает
Детали
Поиск по тексту всегда нормализует пробелы, даже при точном совпадении. Например, он превращает несколько пробелов в один, заменяет разрывы строк на пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button и submit сопоставляются по их value, а не по содержимому текста. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.
get_by_title
Added in: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
- Sync
- Async
expect(page.get_by_title("Issues count")).to_have_text("25 issues")
await expect(page.get_by_title("Issues count")).to_have_text("25 issues")
Аргументы
-
Текст для поиска элемента.
-
Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.
Возвращает
goto
Added before v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится ответом последнего перенаправления.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- timeout превышен во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый код состояния HTTP, включая 404 "Not Found" и 500 "Internal Server Error". Код состояния для таких ответов можно получить, вызвав response.status.
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения - это навигация на about:blank или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему в upstream.
Использование
frame.goto(url)
frame.goto(url, **kwargs)
Аргументы
-
URL для навигации фрейма. URL должен включать схему, например,
https://. -
Значение заголовка Referer. Если указано, оно будет иметь приоритет над значением заголовка referer, установленным с помощью page.set_extra_http_headers().
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout(). -
wait_until"load" | "domcontentloaded" | "networkidle" | "commit" (optional)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
Возвращает
is_enabled
Added before v1.9Возвращает, включен ли элемент (enabled).
Использование
frame.is_enabled(selector)
frame.is_enabled(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
locator
Added in: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице / фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
frame.locator(selector)
frame.locator(selector, **kwargs)
Аргументы
-
Селектор для использования при разрешении элемента DOM.
-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article, который имеетtext=Playwright, соответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти
content, который имеетdivв<article><content><div>Playwright</div></content></article>. Однако поискcontent, который имеетarticle div, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
has_notLocator (optional) Added in: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article, который не имеетdiv, соответствует<article><span>Playwright</span></article>.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
has_not_textstr | Pattern (optional) Added in: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче [строки] сопоставление не учитывает регистр и ищет подстроку.
-
has_textstr | Pattern (optional)#Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче [строки] сопоставление не учитывает регистр и ищет подстроку. Например,
"Playwright"соответствует<article><div>Playwright</div></article>.
Возвращает
set_content
Added before v1.9Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведения.
Использование
frame.set_content(html)
frame.set_content(html, **kwargs)
Аргументы
-
HTML-разметка для назначения странице.
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout(). -
wait_until"load" | "domcontentloaded" | "networkidle" | "commit" (optional)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
Возвращает
title
Added before v1.9Возвращает заголовок страницы.
Использование
frame.title()
Возвращает
wait_for_function
Added before v1.9Возвращает, когда expression возвращает истинное значение, возвращает это значение.
Использование
frame.wait_for_function() можно использовать для наблюдения за изменением размера области просмотра:
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch()
page = browser.new_page()
page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
page.main_frame.wait_for_function("() => window.x > 0")
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch()
page = await browser.new_page()
await page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
await page.main_frame.wait_for_function("() => window.x > 0")
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Чтобы передать аргумент в предикат функции frame.waitForFunction:
- Sync
- Async
selector = ".foo"
frame.wait_for_function("selector => !!document.querySelector(selector)", selector)
selector = ".foo"
await frame.wait_for_function("selector => !!document.querySelector(selector)", selector)
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
argEvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
pollingfloat | "raf" (optional)#Если polling равно
'raf', то expression постоянно выполняется вrequestAnimationFramecallback. Если polling является числом, то оно рассматривается как интервал в миллисекундах, через который функция будет выполняться. По умолчаниюraf. -
Максимальное время ожидания в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
wait_for_load_state
Added before v1.9Ожидает достижения требуемого состояния загрузки.
Этот метод возвращает управление, когда фрейм достигает требуемого состояния загрузки, по умолчанию load. Навигация должна быть завершена к моменту вызова этого метода. Если текущий документ уже достиг требуемого состояния, метод разрешается немедленно.
В большинстве случаев этот метод не требуется, так как Playwright автоматически ожидает перед каждым действием.
Использование
- Sync
- Async
frame.click("button") # клик вызывает навигацию.
frame.wait_for_load_state() # обещание разрешается после события "load".
await frame.click("button") # клик вызывает навигацию.
await frame.wait_for_load_state() # обещание разрешается после события "load".
Аргументы
-
state"load" | "domcontentloaded" | "networkidle" (опционально)#Опциональное состояние загрузки, которое нужно ожидать, по умолчанию
load. Если состояние уже было достигнуто при загрузке текущего документа, метод разрешается немедленно. Может быть одним из:'load'- ожидать, пока не будет вызвано событиеload.'domcontentloaded'- ожидать, пока не будет вызвано событиеDOMContentLoaded.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ ожидать, пока не будет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб-утверждения для оценки готовности.
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout().
Возвращает
wait_for_url
Added in: v1.11Ожидает, пока фрейм перейдет на указанный URL.
Использование
- Sync
- Async
frame.click("a.delayed-navigation") # клик по ссылке косвенно вызывает навигацию
frame.wait_for_url("**/target.html")
await frame.click("a.delayed-navigation") # клик по ссылке косвенно вызывает навигацию
await frame.wait_for_url("**/target.html")
Аргументы
-
urlstr | Pattern | Callable[URL]:bool#Глобальный шаблон, регулярное выражение или предикат, принимающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации на URL, который точно равен строке.
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout(). -
wait_until"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда будет вызвано событиеDOMContentLoaded.'load'- считать операцию завершенной, когда будет вызвано событиеload.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, вместо этого полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
Возвращает
Свойства
child_frames
Added before v1.9Использование
frame.child_frames
Возвращает
is_detached
Added before v1.9Возвращает true, если фрейм был отсоединен, или false в противном случае.
Использование
frame.is_detached()
Возвращает
name
Added before v1.9Возвращает атрибут name фрейма, как указано в теге.
Если имя пустое, возвращает атрибут id.
Это значение вычисляется один раз при создании фрейма и не будет обновляться, если атрибут изменится позже.
Использование
frame.name
Возвращает
page
Added before v1.9Возвращает страницу, содержащую этот фрейм.
Использование
frame.page
Возвращает
parent_frame
Added before v1.9Родительский фрейм, если есть. Отсоединенные фреймы и главные фреймы возвращают null.
Использование
frame.parent_frame
Возвращает
url
Added before v1.9Возвращает URL фрейма.
Использование
frame.url
Возвращает
Устаревшие
check
Added before v1.9Используйте основанный на локаторах locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже отмечен, этот метод возвращает управление немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для клика в центре элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод вызывает ошибку.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
frame.check(selector)
frame.check(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Нужно ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (опционально)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
positionDict (опционально) Added in: v1.11#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trialbool (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
click
Added before v1.9Используйте основанный на локаторах locator.click() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для клика в центре элемента или в указанной position.
- Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если не установлен параметр no_wait_after.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
frame.click(selector)
frame.click(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
button"left" | "right" | "middle" (опционально)#По умолчанию
left. -
click_countint (опционально)#по умолчанию 1. См. UIEvent.detail.
-
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки actionability. По умолчанию
false. -
modifiersList["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_afterbool (опционально)#DeprecatedЭтот параметр по умолчанию будет
trueв будущем.Действия, инициирующие навигации, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится этот параметр только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false. -
Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trialbool (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
dblclick
Added before v1.9Используйте основанный на локаторах locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для двойного клика в центре элемента или в указанной position. если первый клик
dblclick()вызывает событие навигации, этот метод вызовет ошибку.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
frame.dblclick() генерирует два события click и одно событие dblclick.
Использование
frame.dblclick(selector)
frame.dblclick(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
button"left" | "right" | "middle" (опционально)#По умолчанию
left. -
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки actionability. По умолчанию
false. -
modifiersList["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_afterbool (опционально)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trialbool (опционально) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
dispatch_event
Added before v1.9Use locator-based locator.dispatch_event() instead. Read more about locators.
Пример ниже отправляет событие click на элемент. Независимо от состояния видимости элемента, click отправляется. Это эквивалентно вызову element.click().
Использование
- Sync
- Async
frame.dispatch_event("button#submit", "click")
await frame.dispatch_event("button#submit", "click")
Внутри создается экземпляр события на основе указанного type, инициализируется с помощью свойств event_init и отправляется на элемент. События по умолчанию composed, cancelable и всплывают.
Поскольку event_init специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:
- Sync
- Async
# note you can only create data_transfer in chromium and firefox
data_transfer = frame.evaluate_handle("new DataTransfer()")
frame.dispatch_event("#source", "dragstart", { "dataTransfer": data_transfer })
# note you can only create data_transfer in chromium and firefox
data_transfer = await frame.evaluate_handle("new DataTransfer()")
await frame.dispatch_event("#source", "dragstart", { "dataTransfer": data_transfer })
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип DOM события:
"click","dragstart", и т.д. -
event_initEvaluationArgument (optional)#Необязательные свойства инициализации, специфичные для события.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
eval_on_selector
Added in: v1.9This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky tests. Use locator.evaluate(), other Locator helper methods or web-first assertions instead.
Возвращает возвращаемое значение expression.
Метод находит элемент, соответствующий указанному селектору в фрейме, и передает его в качестве первого аргумента в expression. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку.
Если expression возвращает Promise, то frame.eval_on_selector() будет ждать разрешения промиса и вернет его значение.
Использование
- Sync
- Async
search_value = frame.eval_on_selector("#search", "el => el.value")
preload_href = frame.eval_on_selector("link[rel=preload]", "el => el.href")
html = frame.eval_on_selector(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello")
search_value = await frame.eval_on_selector("#search", "el => el.value")
preload_href = await frame.eval_on_selector("link[rel=preload]", "el => el.href")
html = await frame.eval_on_selector(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello")
Аргументы
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
argEvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
Возвращает
eval_on_selector_all
Added in: v1.9In most cases, locator.evaluate_all(), other Locator helper methods and web-first assertions do a better job.
Возвращает возвращаемое значение expression.
Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента в expression.
Если expression возвращает Promise, то frame.eval_on_selector_all() будет ждать разрешения промиса и вернет его значение.
Использование
- Sync
- Async
divs_counts = frame.eval_on_selector_all("div", "(divs, min) => divs.length >= min", 10)
divs_counts = await frame.eval_on_selector_all("div", "(divs, min) => divs.length >= min", 10)
Аргументы
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
argEvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
Возвращает
expect_navigation
Added before v1.9This method is inherently racy, please use frame.wait_for_url() instead.
Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null.
Использование
Этот метод ожидает, пока фрейм не перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:
- Sync
- Async
with frame.expect_navigation():
frame.click("a.delayed-navigation") # clicking the link will indirectly cause a navigation
# Resolves after navigation has finished
async with frame.expect_navigation():
await frame.click("a.delayed-navigation") # clicking the link will indirectly cause a navigation
# Resolves after navigation has finished
Использование History API для изменения URL считается навигацией.
Аргументы
-
Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_navigation_timeout(), browser_context.set_default_timeout(), page.set_default_navigation_timeout() или page.set_default_timeout(). -
urlstr | Pattern | Callable[URL]:bool (optional)#Глобальный шаблон, регулярное выражение или предикат, получающий URL для совпадения при ожидании навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ждать навигации к URL, который точно равен строке.
-
wait_until"load" | "domcontentloaded" | "networkidle" | "commit" (optional)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
Возвращает
fill
Added before v1.9Use locator-based locator.fill() instead. Read more about locators.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, фокусируется на элементе, заполняет его и вызывает событие input после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является <input>, <textarea> или [contenteditable] элементом, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, будет заполнен именно этот элемент управления.
Для отправки более детализированных событий клавиатуры используйте locator.press_sequentially().
Использование
frame.fill(selector, value)
frame.fill(selector, value, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<input>,<textarea>или[contenteditable]. -
forcebool (optional) Added in: v1.13#Следует ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods.
Возвращает
focus
Added before v1.9Use locator-based locator.focus() instead. Read more about locators.
Этот метод получает элемент с selector и фокусируется на нем. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.
Использование
frame.focus(selector)
frame.focus(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods.
Возвращает
get_attribute
Added before v1.9Use locator-based locator.get_attribute() instead. Read more about locators.
Возвращает значение атрибута элемента.
Использование
frame.get_attribute(selector, name)
frame.get_attribute(selector, name, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, для которого нужно получить значение.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods.
Возвращает
hover
Added before v1.9Use locator-based locator.hover() instead. Read more about locators.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на соответствующем элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы навести курсор на центр элемента или указанную position.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
frame.hover(selector)
frame.hover(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersList["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_afterbool (optional) Added in: v1.28#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trialbool (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
inner_html
Added before v1.9Use locator-based locator.inner_html() instead. Read more about locators.
Возвращает element.innerHTML.
Использование
frame.inner_html(selector)
frame.inner_html(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
inner_text
Added before v1.9Use locator-based locator.inner_text() instead. Read more about locators.
Возвращает element.innerText.
Использование
frame.inner_text(selector)
frame.inner_text(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
input_value
Added in: v1.13Use locator-based locator.input_value() instead. Read more about locators.
Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.
Вызывает ошибку для не-вводимых элементов. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный control, возвращает значение этого элемента управления.
Использование
frame.input_value(selector)
frame.input_value(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
is_checked
Added before v1.9Use locator-based locator.is_checked() instead. Read more about locators.
Возвращает, отмечен ли элемент. Вызывает ошибку, если элемент не является флажком или радиокнопкой.
Использование
frame.is_checked(selector)
frame.is_checked(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
is_disabled
Added before v1.9Use locator-based locator.is_disabled() instead. Read more about locators.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
frame.is_disabled(selector)
frame.is_disabled(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
is_editable
Added before v1.9Use locator-based locator.is_editable() instead. Read more about locators.
Возвращает, является ли элемент editable.
Использование
frame.is_editable(selector)
frame.is_editable(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
is_hidden
Added before v1.9Use locator-based locator.is_hidden() instead. Read more about locators.
Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.
Использование
frame.is_hidden(selector)
frame.is_hidden(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Deprecated
Эта опция игнорируется. frame.is_hidden() не ждет, пока элемент станет скрытым, и возвращается немедленно.
Возвращает
is_visible
Added before v1.9Use locator-based locator.is_visible() instead. Read more about locators.
Возвращает, является ли элемент visible. selector, который не соответствует ни одному элементу, считается невидимым.
Использование
frame.is_visible(selector)
frame.is_visible(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Deprecated
Эта опция игнорируется. frame.is_visible() не ждет, пока элемент станет видимым, и возвращается немедленно.
Возвращает
press
Added before v1.9Use locator-based locator.press() instead. Read more about locators.
key может указывать предполагаемое значение keyboardEvent.key или один символ для генерации текста. Надмножество значений key можно найти здесь. Примеры ключей:
F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp и т.д.
Также поддерживаются следующие модификационные сочетания: Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta. ControlOrMeta разрешается в Control на Windows и Linux и в Meta на macOS.
Удержание Shift будет вводить текст, соответствующий key в верхнем регистре.
Если key является одним символом, он чувствителен к регистру, поэтому значения a и A будут генерировать разные соответствующие тексты.
Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++ или key: "Control+Shift+T". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Использование
frame.press(selector, key)
frame.press(selector, key, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeftилиa. -
Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию 0. -
no_wait_afterbool (optional)#DeprecatedЭта опция по умолчанию будет
trueв будущем.Действия, инициирующие навигацию, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится эта опция только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false. -
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
query_selector
Added in: v1.9Use locator-based frame.locator() instead. Read more about locators.
Возвращает ElementHandle, указывающий на элемент фрейма.
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator и утверждения, ориентированные на веб.
Метод находит элемент, соответствующий указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает null.
Использование
frame.query_selector(selector)
frame.query_selector(selector, **kwargs)
Аргументы
-
Селектор для поиска.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
Возвращает
query_selector_all
Added in: v1.9Use locator-based frame.locator() instead. Read more about locators.
Возвращает ElementHandles, указывающие на элементы фрейма.
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator.
Метод находит все элементы, соответствующие указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает пустой массив.
Использование
frame.query_selector_all(selector)
Аргументы
Возвращает
select_option
Added before v1.9Use locator-based locator.select_option() instead. Read more about locators.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ожидает, пока все указанные опции не будут присутствовать в элементе <select>, и выбирает эти опции.
Если целевой элемент не является элементом <select>, этот метод вызывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, будет использован контроль.
Возвращает массив значений опций, которые были успешно выбраны.
Вызывает событие change и input, как только все предоставленные опции были выбраны.
Использование
- Sync
- Async
# Single selection matching the value or label
frame.select_option("select#colors", "blue")
# single selection matching both the label
frame.select_option("select#colors", label="blue")
# multiple selection
frame.select_option("select#colors", value=["red", "green", "blue"])
# Single selection matching the value or label
await frame.select_option("select#colors", "blue")
# single selection matching the label
await frame.select_option("select#colors", label="blue")
# multiple selection
await frame.select_option("select#colors", value=["red", "green", "blue"])
Аргументы
-
Селектор для поиска.
-
forcebool (optional) Added in: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
elementElementHandle | List[ElementHandle] (optional)#Элементы опций для выбора. Необязательно.
-
indexint | List[int] (optional)#Опции для выбора по индексу. Необязательно.
-
valuestr | List[str] (optional)#Опции для выбора по значению. Если
<select>имеет атрибутmultiple, все указанные опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Необязательно. -
labelstr | List[str] (optional)#Опции для выбора по метке. Если
<select>имеет атрибутmultiple, все указанные опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Необязательно.
Возвращает
set_checked
Added in: v1.15Use locator-based locator.set_checked() instead. Read more about locators.
Этот метод отмечает или снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
- Если элемент уже имеет правильное состояние, этот метод возвращается немедленно.
- Подождите проверки actionability на найденном элементе, если не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте page.mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен или не отмечен. Если нет, этот метод вызывает ошибку.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
frame.set_checked(selector, checked)
frame.set_checked(selector, checked, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Нужно ли отметить или снять отметку с флажка.
-
Нужно ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка для использования относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
set_input_files
Added before v1.9Use locator-based locator.set_input_files() instead. Read more about locators.
Устанавливает значение файлового ввода в эти пути файлов или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы.
Этот метод ожидает, что selector указывает на input element. Однако, если элемент находится внутри элемента <label>, который имеет связанный control, нацелен на контроль.
Использование
frame.set_input_files(selector, files)
frame.set_input_files(selector, files, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
filesUnion[str, pathlib.Path] | List[Union[str, pathlib.Path]] | Dict | List[Dict]# -
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
tap
Added before v1.9Use locator-based locator.tap() instead. Read more about locators.
Этот метод нажимает на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите проверки actionability на найденном элементе, если не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в вид, если это необходимо.
- Используйте page.touchscreen для нажатия в центре элемента или в указанной position.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
frame.tap() требует, чтобы параметр hasTouch контекста браузера был установлен в true.
Использование
frame.tap(selector)
frame.tap(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Нужно ли обходить проверки actionability. По умолчанию
false. -
modifiersList["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (optional)#Модификаторы клавиш для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка для использования относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trialbool (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
text_content
Added before v1.9Use locator-based locator.text_content() instead. Read more about locators.
Возвращает element.textContent.
Использование
frame.text_content(selector)
frame.text_content(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
type
Added before v1.9In most cases, you should use locator.fill() instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use locator.press_sequentially().
Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. frame.type может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте frame.fill().
Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте keyboard.press().
Использование
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout().
Возвращает
uncheck
Added before v1.9Use locator-based locator.uncheck() instead. Read more about locators.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят с отметки, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлен параметр force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
frame.uncheck(selector)
frame.uncheck(selector, **kwargs)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Следует ли обходить проверки actionability. По умолчанию
false. -
no_wait_afterbool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
positionDict (optional) Added in: v1.11#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods. -
trialbool (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
wait_for_selector
Added before v1.9Use web assertions that assert visibility or a locator-based locator.wait_for() instead. Read more about locators.
Возвращает, когда элемент, указанный селектором, удовлетворяет параметру state. Возвращает null, если ожидание для hidden или detached.
Playwright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.
Ожидайте, пока selector удовлетворит параметру state (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если на момент вызова метода selector уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение timeout миллисекунд, функция выбросит исключение.
Использование
Этот метод работает через навигации:
- Sync
- Async
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
chromium = playwright.chromium
browser = chromium.launch()
page = browser.new_page()
for current_url in ["https://google.com", "https://bbc.com"]:
page.goto(current_url, wait_until="domcontentloaded")
element = page.main_frame.wait_for_selector("img")
print("Loaded image: " + str(element.get_attribute("src")))
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
chromium = playwright.chromium
browser = await chromium.launch()
page = await browser.new_page()
for current_url in ["https://google.com", "https://bbc.com"]:
await page.goto(current_url, wait_until="domcontentloaded")
element = await page.main_frame.wait_for_selector("img")
print("Loaded image: " + str(await element.get_attribute("src")))
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Аргументы
-
Селектор для запроса.
-
state"attached" | "detached" | "visible" | "hidden" (optional)#По умолчанию
'visible'. Может быть:'attached'- ожидание, пока элемент будет присутствовать в DOM.'detached'- ожидание, пока элемент не будет присутствовать в DOM.'visible'- ожидание, пока элемент не будет иметь пустую рамку иvisibility:hidden. Обратите внимание, что элемент без содержимого или сdisplay:noneимеет пустую рамку и не считается видимым.'hidden'- ожидание, пока элемент не будет отсоединен от DOM, или не будет иметь пустую рамку илиvisibility:hidden. Это противоположно опции'visible'.
-
strictbool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods.
Возвращает
wait_for_timeout
Added before v1.9Never wait for timeout in production. Tests that wait for time are inherently flaky. Use Locator actions and web assertions that wait automatically.
Ожидает заданный timeout в миллисекундах.
Обратите внимание, что frame.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие.
Использование
frame.wait_for_timeout(timeout)
Аргументы
Возвращает