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-контент для внедрения в фрейм.
-
path
Union[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-контент для внедрения в фрейм.
-
path
Union[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_after
bool (optional)#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
source_position
Dict (optional) Added in: v1.14#Кликает на элементе источника в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
target_position
Dict (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-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (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-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (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
. -
exact
bool (optional) Added in: v1.28#Совпадает ли name точно: с учетом регистра и всей строки. По умолчанию false. Игнорируется, когда name является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.
-
Атрибут, который обычно устанавливается с помощью
aria-expanded
.Узнайте больше о
aria-expanded
. -
include_hidden
bool (optional)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden
. -
Числовой атрибут, который обычно присутствует для ролей
heading
,listitem
,row
,treeitem
, с значениями по умолчанию для элементов<h1>-<h6>
.Узнайте больше о
aria-level
. -
name
str | 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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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_not
Locator (optional) Added in: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article
, который не имеетdiv
, соответствует<article><span>Playwright</span></article>
.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
has_not_text
str | Pattern (optional) Added in: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче [строки] сопоставление не учитывает регистр и ищет подстроку.
-
has_text
str | 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-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
polling
float | "raf" (optional)#Если polling равно
'raf'
, то expression постоянно выполняется вrequestAnimationFrame
callback. Если 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")
Аргументы
-
url
str | 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_after
bool (опционально)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
position
Dict (опционально) Added in: v1.11#Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trial
bool (опционально) 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_count
int (опционально)#по умолчанию 1. См. UIEvent.detail.
-
Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки actionability. По умолчанию
false
. -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_after
bool (опционально)#DeprecatedЭтот параметр по умолчанию будет
true
в будущем.Действия, инициирующие навигации, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится этот параметр только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trial
bool (опционально) 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
. -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (опционально)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_after
bool (опционально)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка для использования относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trial
bool (опционально) 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_init
EvaluationArgument (optional)#Необязательные свойства инициализации, специфичные для события.
-
strict
bool (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 выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (optional)#Необязательный аргумент для передачи в expression.
-
strict
bool (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 выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (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(). -
url
str | 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]
. -
force
bool (optional) Added in: v1.13#Следует ли обходить проверки actionability. По умолчанию
false
. -
no_wait_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, для которого нужно получить значение.
-
strict
bool (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
. -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_after
bool (optional) Added in: v1.28#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trial
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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)
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
strict
bool (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_after
bool (optional)#DeprecatedЭта опция по умолчанию будет
true
в будущем.Действия, инициирующие навигацию, ожидают, пока эти навигации не произойдут и страницы не начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Вам понадобится эта опция только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
strict
bool (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)
Аргументы
-
Селектор для поиска.
-
strict
bool (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"])
Аргументы
-
Селектор для поиска.
-
force
bool (optional) Added in: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false
. -
no_wait_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strict
bool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
element
ElementHandle | List[ElementHandle] (optional)#Элементы опций для выбора. Необязательно.
-
index
int | List[int] (optional)#Опции для выбора по индексу. Необязательно.
-
value
str | List[str] (optional)#Опции для выбора по значению. Если
<select>
имеет атрибутmultiple
, все указанные опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Необязательно. -
label
str | 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_after
bool (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)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
files
Union[str, pathlib.Path] | List[Union[str, pathlib.Path]] | Dict | List[Dict]# -
no_wait_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strict
bool (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
. -
modifiers
List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (optional)#Модификаторы клавиш для нажатия. Гарантирует, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
no_wait_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка для использования относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout(). -
trial
bool (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)
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
strict
bool (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_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strict
bool (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_after
bool (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
position
Dict (optional) Added in: v1.11#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
bool (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы browser_context.set_default_timeout() или page.set_default_timeout() methods. -
trial
bool (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'
.
-
strict
bool (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)
Аргументы
Возвращает