LocatorAssertions
Класс [LocatorAssertions] предоставляет методы утверждений, которые можно использовать для проверки состояния [Locator] в тестах.
import { test, expect } from '@playwright/test';
test('статус становится отправленным', async ({ page }) => {
// ...
await page.getByRole('button').click();
await expect(page.locator('.status')).toHaveText('Submitted');
});
Методы
toBeAttached
Добавлено в: v1.33Убедитесь, что [Locator] указывает на элемент, который подключен к документу или ShadowRoot.
Использование
await expect(page.getByText('Скрытый текст')).toBeAttached();
Аргументы
options
[Object] (необязательно)
Возвращает
- [Promise]<[void]>#
toBeChecked
Добавлено в: v1.20Убедитесь, что [Locator] указывает на отмеченный элемент ввода.
Использование
const locator = page.getByLabel('Подписаться на рассылку');
await expect(locator).toBeChecked();
Аргументы
options
[Object] (необязательно)-
checked
[boolean] (необязательно) Добавлено в: v1.18#Указывает состояние для проверки. По умолчанию проверяет, что элемент отмечен. Этот параметр не может использоваться, если indeterminate установлен в true.
-
indeterminate
[boolean] (необязательно) Добавлено в: v1.50#Указывает, что элемент находится в неопределенном (смешанном) состоянии. Поддерживается только для флажков и радиокнопок. Этот параметр не может быть true, если указан checked.
-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeDisabled
Добавлено в: v1.20Убедитесь, что [Locator] указывает на отключенный элемент. Элемент считается отключенным, если у него есть атрибут "disabled" или он отключен через 'aria-disabled'. Обратите внимание, что только элементы управления, такие как HTML button
, input
, select
, textarea
, option
, optgroup
, могут быть отключены с помощью установки атрибута "disabled". Атрибут "disabled" на других элементах игнорируется браузером.
Использование
const locator = page.locator('button.submit');
await expect(locator).toBeDisabled();
Аргументы
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeEditable
Добавлено в: v1.20Убедитесь, что [Locator] указывает на редактируемый элемент.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toBeEditable();
Аргументы
options
[Object] (необязательно)
Возвращает
- [Promise]<[void]>#
toBeEmpty
Добавлено в: v1.20Убедитесь, что [Locator] указывает на пустой редактируемый элемент или на DOM-узел, который не содержит текста.
Использование
const locator = page.locator('div.warning');
await expect(locator).toBeEmpty();
Аргументы
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeEnabled
Добавлено в: v1.20Убедитесь, что [Locator] указывает на включенный элемент.
Использование
const locator = page.locator('button.submit');
await expect(locator).toBeEnabled();
Аргументы
options
[Object] (необязательно)
Возвращает
- [Promise]<[void]>#
toBeFocused
Добавлено в: v1.20Убедитесь, что [Locator] указывает на сфокусированный DOM-узел.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toBeFocused();
Аргументы
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeHidden
Добавлено в: v1.20Убедитесь, что [Locator] либо не разрешается в какой-либо DOM-узел, либо разрешается в невидимый узел.
Использование
const locator = page.locator('.my-element');
await expect(locator).toBeHidden();
Аргументы
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeInViewport
Добавлено в: v1.31Убедитесь, что [Locator] указывает на элемент, который пересекает область просмотра, согласно API наблюдателя пересечения.
Использование
const locator = page.getByRole('button');
// Убедитесь, что хотя бы часть элемента пересекает область просмотра.
await expect(locator).toBeInViewport();
// Убедитесь, что элемент полностью вне области просмотра.
await expect(locator).not.toBeInViewport();
// Убедитесь, что хотя бы половина элемента пересекает область просмотра.
await expect(locator).toBeInViewport({ ratio: 0.5 });
Аргументы
options
[Object] (необязательно)-
ratio
[number] (необязательно)#Минимальное соотношение элемента, пересекающего область просмотра. Если равно
0
, то элемент должен пересекать область просмотра при любом положительном соотношении. По умолчанию0
. -
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toBeVisible
Добавлено в: v1.20Убедитесь, что [Locator] указывает на прикрепленный и видимый DOM-узел.
Чтобы проверить, что хотя бы один элемент из списка видим, используйте locator.first().
Использование
// Конкретный элемент видим.
await expect(page.getByText('Добро пожаловать')).toBeVisible();
// По крайней мере один элемент в списке видим.
await expect(page.getByTestId('todo-item').first()).toBeVisible();
// По крайней мере один из двух элементов видим, возможно, оба.
await expect(
page.getByRole('button', { name: 'Войти' })
.or(page.getByRole('button', { name: 'Зарегистрироваться' }))
.first()
).toBeVisible();
Аргументы
options
[Object] (необязательно)
Возвращает
- [Promise]<[void]>#
toContainText
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент, который содержит заданный текст. Все вложенные элементы будут учитываться при вычислении текстового содержимого элемента. Вы также можете использовать регулярные выражения для значения.
Использование
const locator = page.locator('.title');
await expect(locator).toContainText('подстрока');
await expect(locator).toContainText(/\d сообщения/);
Если вы передаете массив в качестве ожидаемого значения, ожидания следующие:
- Locator разрешается в список элементов.
- Количество элементов равно количеству ожидаемых значений в массиве.
- Элементы из списка имеют текст, соответствующий значениям ожидаемого массива, по одному, в порядке.
Например, рассмотрим следующий список:
<ul>
<li>Текст элемента 1</li>
<li>Текст элемента 2</li>
<li>Текст элемента 3</li>
</ul>
Посмотрим, как мы можем использовать утверждение:
// ✓ Содержит правильные элементы в правильном порядке
await expect(page.locator('ul > li')).toContainText(['Текст 1', 'Текст 3']);
// ✖ Неправильный порядок
await expect(page.locator('ul > li')).toContainText(['Текст 3', 'Текст 2']);
// ✖ Ни один элемент не содержит этот текст
await expect(page.locator('ul > li')).toContainText(['Некоторые 33']);
// ✖ Locator указывает на внешний элемент списка, а не на элементы списка
await expect(page.locator('ul')).toContainText(['Текст 3']);
Аргументы
-
expected
[string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#Ожидаемая подстрока или RegExp или список этих значений.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно) Добавлено в: v1.23#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
. -
useInnerText
[boolean] (необязательно) Добавлено в: v1.18#Указывает, следует ли использовать
element.innerText
вместоelement.textContent
при получении текста узла DOM.
-
Возвращает
- [Promise]<[void]>#
Детали
Когда параметр expected
является строкой, Playwright нормализует пробелы и переносы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. Когда используется регулярное выражение, фактический текст сопоставляется как есть.
toHaveAccessibleDescription
Добавлено в: v1.44Убедитесь, что [Locator] указывает на элемент с заданным доступным описанием.
Использование
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Сохранить результаты на диск');
Аргументы
-
description
[string] | [RegExp]#Ожидаемое доступное описание.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно)#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveAccessibleErrorMessage
Добавлено в: v1.50Убедитесь, что [Locator] указывает на элемент с заданным aria errormessage.
Использование
const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Имя пользователя обязательно.');
Аргументы
-
errorMessage
[string] | [RegExp]#Ожидаемое доступное сообщение об ошибке.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно)#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveAccessibleName
Добавлено в: v1.44Убедитесь, что [Locator] указывает на элемент с заданным доступным именем.
Использование
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Сохранить на диск');
Аргументы
-
name
[string] | [RegExp]#Ожидаемое доступное имя.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно)#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveAttribute(name, value)
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданным атрибутом.
Использование
const locator = page.locator('input');
await expect(locator).toHaveAttribute('type', 'text');
Аргументы
-
name
[string] Добавлено в: v1.18#Имя атрибута.
-
value
[string] | [RegExp] Добавлено в: v1.18#Ожидаемое значение атрибута.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно) Добавлено в: v1.40#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveAttribute(name)
Добавлено в: v1.39Убедитесь, что [Locator] указывает на элемент с заданным атрибутом. Метод будет утверждать наличие атрибута.
const locator = page.locator('input');
// Утверждение существования атрибута.
await expect(locator).toHaveAttribute('disabled');
await expect(locator).not.toHaveAttribute('open');
Использование
await expect(locator).toHaveAttribute(name);
await expect(locator).toHaveAttribute(name, options);
Аргументы
-
name
[string]#Имя атрибута.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveClass
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданными CSS-классами. Когда передается строка, она должна полностью соответствовать атрибуту class
элемента. Чтобы сопоставить отдельные классы или выполнить частичное сопоставление, используйте регулярное выражение:
Использование
<div class='middle selected row' id='component'></div>
const locator = page.locator('#component');
await expect(locator).toHaveClass('middle selected row');
await expect(locator).toHaveClass(/(^|\s)selected(\s|$)/);
Когда передается массив, метод утверждает, что список расположенных элементов соответствует соответствующему списку ожидаемых значений классов. Атрибут класса каждого элемента сопоставляется с соответствующей строкой или регулярным выражением в массиве:
const locator = page.locator('list > .component');
await expect(locator).toHaveClass(['component', 'component selected', 'component']);
Аргументы
-
expected
[string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#Ожидаемый класс или RegExp или список этих значений.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveCount
Добавлено в: v1.20Убедитесь, что [Locator] разрешается в точное количество DOM-узлов.
Использование
const list = page.locator('list > .component');
await expect(list).toHaveCount(3);
Аргументы
-
count
[number] Добавлено в: v1.18#Ожидаемое количество.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveCSS
Добавлено в: v1.20Убедитесь, что [Locator] разрешается в элемент с заданным вычисленным CSS-стилем.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveCSS('display', 'flex');
Аргументы
-
name
[string] Добавлено в: v1.18#Имя CSS-свойства.
-
value
[string] | [RegExp] Добавлено в: v1.18#Значение CSS-свойства.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveId
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданным идентификатором DOM-узла.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toHaveId('lastname');
Аргументы
-
id
[string] | [RegExp] Добавлено в: v1.18#Идентификатор элемента.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveJSProperty
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданным свойством JavaScript. Обратите внимание, что это свойство может быть примитивного типа, а также обычным сериализуемым объектом JavaScript.
Использование
const locator = page.locator('.component');
await expect(locator).toHaveJSProperty('loaded', true);
Аргументы
-
name
[string] Добавлено в: v1.18#Имя свойства.
-
value
[Object] Добавлено в: v1.18#Значение свойства.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveRole
Добавлено в: v1.44Убедитесь, что [Locator] указывает на элемент с заданной ARIA ролью.
Обратите внимание, что роль сопоставляется как строка, игнорируя иерархию ARIA ролей. Например, утверждение о суперклассе роли "checkbox"
на элементе с подклассом роли "switch"
завершится неудачей.
Использование
const locator = page.getByTestId('save-button');
await expect(locator).toHaveRole('button');
Аргументы
-
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 роль.
-
options
[Object] (необязательно)-
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveScreenshot(name)
Добавлено в: v1.23Эта функция будет ждать, пока два последовательных скриншота локатора не дадут одинаковый результат, а затем сравнит последний скриншот с ожиданием.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot('image.png');
Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.
Аргументы
-
name
[string] | [Array]<[string]>#Имя снимка.
-
options
[Object] (необязательно)-
animations
"disabled" | "allow" (необязательно)#Если установить в
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:- конечные анимации ускоряются до завершения, чтобы они вызвали событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"disabled"
, что отключает анимации. - конечные анимации ускоряются до завершения, чтобы они вызвали событие
-
caret
"hide" | "initial" (необязательно)#Если установить в
"hide"
, скриншот скроет текстовый курсор. Если установить в"initial"
, поведение текстового курсора не изменится. По умолчанию"hide"
. -
mask
[Array]<[Locator]> (необязательно)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым квадратом
#FF00FF
(настраиваемым с помощью maskColor), который полностью покрывает его ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это. -
maskColor
[string] (необязательно) Добавлено в: v1.35#Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый
#FF00FF
. -
maxDiffPixelRatio
[number] (необязательно)#Допустимое соотношение пикселей, которые отличаются от общего количества пикселей, между
0
и1
. По умолчанию настраивается с помощьюTestConfig.expect
. По умолчанию не установлено. -
maxDiffPixels
[number] (необязательно)#Допустимое количество пикселей, которые могут отличаться. По умолчанию настраивается с помощью
TestConfig.expect
. По умолчанию не установлено. -
omitBackground
[boolean] (необязательно)#Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применяется к изображениям
jpeg
. По умолчаниюfalse
. -
scale
"css" | "device" (необязательно)#Если установить в
"css"
, скриншот будет иметь один пиксель на каждый CSS-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование параметра"device"
создаст один пиксель на каждый пиксель устройства, поэтому скриншоты для устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"css"
. -
stylePath
[string] | [Array]<[string]> (необязательно) Добавлено в: v1.41#Имя файла, содержащего таблицу стилей, которую следует применить при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
-
threshold
[number] (необязательно)#Допустимая воспринимаемая разница в цвете в цветовом пространстве YIQ между одним и тем же пикселем в сравниваемых изображениях, от нуля (строго) до одного (свободно), по умолчанию настраивается с помощью
TestConfig.expect
. По умолчанию0.2
. -
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveScreenshot(options)
Добавлено в: v1.23Эта функция будет ждать, пока два последовательных скриншота локатора не дадут одинаковый результат, а затем сравнит последний скриншот с ожиданием.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot();
Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.
Аргументы
options
[Object] (необязательно)-
animations
"disabled" | "allow" (необязательно)#Если установить в
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:- конечные анимации ускоряются до завершения, чтобы они вызвали событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"disabled"
, что отключает анимации. - конечные анимации ускоряются до завершения, чтобы они вызвали событие
-
caret
"hide" | "initial" (необязательно)#Если установить в
"hide"
, скриншот скроет текстовый курсор. Если установить в"initial"
, поведение текстового курсора не изменится. По умолчанию"hide"
. -
mask
[Array]<[Locator]> (необязательно)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым квадратом
#FF00FF
(настраиваемым с помощью maskColor), который полностью покрывает его ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это. -
maskColor
[string] (необязательно) Добавлено в: v1.35#Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый
#FF00FF
. -
maxDiffPixelRatio
[number] (необязательно)#Допустимое соотношение пикселей, которые отличаются от общего количества пикселей, между
0
и1
. По умолчанию настраивается с помощьюTestConfig.expect
. По умолчанию не установлено. -
maxDiffPixels
[number] (необязательно)#Допустимое количество пикселей, которые могут отличаться. По умолчанию настраивается с помощью
TestConfig.expect
. По умолчанию не установлено. -
omitBackground
[boolean] (необязательно)#Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применяется к изображениям
jpeg
. По умолчаниюfalse
. -
scale
"css" | "device" (необязательно)#Если установить в
"css"
, скриншот будет иметь один пиксель на каждый CSS-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование параметра"device"
создаст один пиксель на каждый пиксель устройства, поэтому скриншоты для устройств с высоким разрешением будут в два раза больше или даже больше.По умолчанию
"css"
. -
stylePath
[string] | [Array]<[string]> (необязательно) Добавлено в: v1.41#Имя файла, содержащего таблицу стилей, которую следует применить при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.
-
threshold
[number] (необязательно)#Допустимая воспринимаемая разница в цвете в цветовом пространстве YIQ между одним и тем же пикселем в сравниваемых изображениях, от нуля (строго) до одного (свободно), по умолчанию настраивается с помощью
TestConfig.expect
. По умолчанию0.2
. -
timeout
[number] (необязательно)#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveText
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданным текстом. Все вложенные элементы будут учитываться при вычислении текстового содержимого элемента. Вы также можете использовать регулярные выражения для значения.
Использование
const locator = page.locator('.title');
await expect(locator).toHaveText(/Добро пожаловать, Тестовый пользователь/);
await expect(locator).toHaveText(/Добро пожаловать, .*/);
Если вы передаете массив в качестве ожидаемого значения, ожидания следующие:
- Locator разрешается в список элементов.
- Количество элементов равно количеству ожидаемых значений в массиве.
- Элементы из списка имеют текст, соответствующий значениям ожидаемого массива, по одному, в порядке.
Например, рассмотрим следующий список:
<ul>
<li>Текст 1</li>
<li>Текст 2</li>
<li>Текст 3</li>
</ul>
Посмотрим, как мы можем использовать утверждение:
// ✓ Имеет правильные элементы в правильном порядке
await expect(page.locator('ul > li')).toHaveText(['Текст 1', 'Текст 2', 'Текст 3']);
// ✖ Неправильный порядок
await expect(page.locator('ul > li')).toHaveText(['Текст 3', 'Текст 2', 'Текст 1']);
// ✖ Последний элемент не соответствует
await expect(page.locator('ul > li')).toHaveText(['Текст 1', 'Текст 2', 'Текст']);
// ✖ Locator указывает на внешний элемент списка, а не на элементы списка
await expect(page.locator('ul')).toHaveText(['Текст 1', 'Текст 2', 'Текст 3']);
Аргументы
-
expected
[string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#Ожидаемая строка или RegExp или список этих значений.
-
options
[Object] (необязательно)-
ignoreCase
[boolean] (необязательно) Добавлено в: v1.23#Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.
-
timeout
[number] (необязательно) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
. -
useInnerText
[boolean] (необязательно) Добавлено в: v1.18#Указывает, следует ли использовать
element.innerText
вместоelement.textContent
при получении текста узла DOM.
-
Возвращает
- [Promise]<[void]>#
Детали
Когда параметр expected
является строкой, Playwright нормализует пробелы и переносы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. Когда используется регулярное выражение, фактический текст сопоставляется как есть.
toHaveValue
Добавлено в: v1.20Убедитесь, что [Locator] указывает на элемент с заданным значением ввода. Вы также можете использовать регулярные выражения для значения.
Использование
const locator = page.locator('input[type=number]');
await expect(locator).toHaveValue(/[0-9]/);
Аргументы