LocatorAssertions
LocatorAssertions クラスは、テストで Locator の状態についてアサーションを行うために使用できるアサーションメソッドを提供します。
// ...
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
public class TestLocator {
// ...
@Test
void statusBecomesSubmitted() {
// ...
page.getByRole(AriaRole.BUTTON).click();
assertThat(page.locator(".status")).hasText("Submitted");
}
}
メソッド
containsClass
追加バージョン: v1.52Locator が指定された CSS クラスを持つ要素を指していることを保証します。アサートされた値に含まれるすべてのクラス (スペースで区切られたもの) は、Element.classList に任意の順序で存在する必要があります。
使用法
<div class='middle selected row' id='component'></div>
assertThat(page.locator("#component")).containsClass("middle selected row");
assertThat(page.locator("#component")).containsClass("selected");
assertThat(page.locator("#component")).containsClass("row middle");
配列が渡される場合、このメソッドは、特定された要素のリストが対応する期待されるクラスリストのリストと一致することをアサートします。各要素の class 属性は、配列内の対応するクラスと一致します。
<div class='list'>
<div class='component inactive'></div>
<div class='component active'></div>
<div class='component inactive'></div>
</div>
assertThat(page.locator(".list > .component")).containsClass(new String[] {"inactive", "active", "inactive"});
引数
-
expectedString | List<String>#スペースで区切られた期待されるクラス名を含む文字列、または複数の要素をアサートするためのそのような文字列のリスト。
-
optionsLocatorAssertions.ContainsClassOptions(任意)
戻り値
containsText
追加バージョン: v1.20Locator が指定されたテキストを含む要素を指していることを保証します。要素のテキストコンテンツを計算する際には、すべてのネストされた要素が考慮されます。値に正規表現を使用することもできます。
使用法
assertThat(page.locator(".title")).containsText("substring");
配列を期待値として渡した場合、期待値は次のとおりです。
- Locator は要素のリストに解決されます。
- このリストの**サブセット**の要素は、それぞれ期待される配列のテキストを含みます。
- 一致する要素のサブセットは、期待される配列と同じ順序になります。
- 期待される配列の各テキスト値は、リスト内のいずれかの要素によって一致します。
たとえば、次のリストを考えます。
<ul>
<li>Item Text 1</li>
<li>Item Text 2</li>
<li>Item Text 3</li>
</ul>
アサーションをどのように使用できるか見てみましょう。
// ✓ Contains the right items in the right order
assertThat(page.locator("ul > li")).containsText(new String[] {"Text 1", "Text 3", "Text 4"});
// ✖ Wrong order
assertThat(page.locator("ul > li")).containsText(new String[] {"Text 3", "Text 2"});
// ✖ No item contains this text
assertThat(page.locator("ul > li")).containsText(new String[] {"Some 33"});
// ✖ Locator points to the outer list element, not to the list items
assertThat(page.locator("ul")).containsText(new String[] {"Text 3"});
引数
-
expectedString | Pattern | String[] | Pattern[]追加: v1.18#期待される部分文字列または正規表現、またはそれらのリスト。
-
optionsLocatorAssertions.ContainsTextOptions(任意)-
setIgnoreCaseboolean (任意)追加日: v1.23#大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
setTimeoutdouble (オプション)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。 -
setUseInnerTextboolean (任意)追加: v1.18#DOM ノードのテキストを取得するときに
element.textContentの代わりにelement.innerTextを使用するかどうか。
-
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
hasAccessibleDescription
追加バージョン: v1.44Locator が指定された アクセシブルな説明 を持つ要素を指していることを保証します。
使用法
Locator locator = page.getByTestId("save-button");
assertThat(locator).hasAccessibleDescription("Save results to disk");
引数
-
期待されるアクセシブルな説明。
-
optionsLocatorAssertions.HasAccessibleDescriptionOptions(任意)-
大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
hasAccessibleErrorMessage
追加バージョン: v1.50Locator が指定された aria errormessage を持つ要素を指していることを保証します。
使用法
Locator locator = page.getByTestId("username-input");
assertThat(locator).hasAccessibleErrorMessage("Username is required.");
引数
-
errorMessageString | Pattern#期待されるアクセシブルなエラーメッセージ。
-
optionsLocatorAssertions.HasAccessibleErrorMessageOptions(任意)-
大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
hasAccessibleName
追加バージョン: v1.44Locator が指定された アクセシブルな名前 を持つ要素を指していることを保証します。
使用法
Locator locator = page.getByTestId("save-button");
assertThat(locator).hasAccessibleName("Save to disk");
引数
-
期待されるアクセシブルな名前。
-
optionsLocatorAssertions.HasAccessibleNameOptions(任意)-
大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
hasAttribute
追加バージョン: v1.20Locator が指定された属性を持つ要素を指していることを保証します。
使用法
assertThat(page.locator("input")).hasAttribute("type", "text");
引数
-
属性名。
-
valueString | Pattern追加: v1.18#期待される属性値。
-
optionsLocatorAssertions.HasAttributeOptions(任意)-
setIgnoreCaseboolean (任意)追加されたバージョン: v1.40#大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
setTimeoutdouble (オプション)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
hasClass
追加バージョン: v1.20Locator が指定された CSS クラスを持つ要素を指していることを保証します。文字列が提供された場合、要素の class 属性と完全に一致する必要があります。個々のクラスと一致させるには、assertThat(locator).containsClass() を使用します。
使用法
<div class='middle selected row' id='component'></div>
assertThat(page.locator("#component")).hasClass("middle selected row");
assertThat(page.locator("#component")).hasClass(Pattern.compile("(^|\\s)selected(\\s|$)"));
配列が渡される場合、このメソッドは、特定された要素のリストが、期待されるクラス値の対応するリストと一致することをアサートします。各要素のクラス属性は、配列内の対応する文字列または正規表現と一致します。
assertThat(page.locator(".list > .component")).hasClass(new String[] {"component", "component selected", "component"});
引数
-
expectedString | Pattern | String[] | Pattern[]追加: v1.18#期待されるクラスまたは正規表現、またはそれらのリスト。
-
optionsLocatorAssertions.HasClassOptions(任意)
戻り値
hasCount
追加バージョン: v1.20Locator が正確な数の DOM ノードに解決されることを保証します。
使用法
assertThat(page.locator("list > .component")).hasCount(3);
引数
-
期待される数。
-
optionsLocatorAssertions.HasCountOptions(任意)
戻り値
hasCSS
追加バージョン: v1.20Locator が指定された計算済み CSS スタイルを持つ要素に解決されることを保証します。
使用法
assertThat(page.getByRole(AriaRole.BUTTON)).hasCSS("display", "flex");
引数
-
CSS プロパティ名。
-
valueString | Pattern追加: v1.18#CSS プロパティ値。
-
optionsLocatorAssertions.HasCSSOptions(任意)
戻り値
hasId
追加バージョン: v1.20Locator が指定された DOM ノード ID を持つ要素を指していることを保証します。
使用法
assertThat(page.getByRole(AriaRole.TEXTBOX)).hasId("lastname");
引数
-
要素 ID。
-
optionsLocatorAssertions.HasIdOptions(任意)
戻り値
hasJSProperty
追加バージョン: v1.20Locator が指定された JavaScript プロパティを持つ要素を指していることを保証します。このプロパティは、プリミティブ型だけでなく、プレーンなシリアライズ可能な JavaScript オブジェクトであることもできます。
使用法
assertThat(page.locator("input")).hasJSProperty("loaded", true);
引数
-
プロパティ名。
-
プロパティ値。
-
optionsLocatorAssertions.HasJSPropertyOptions(任意)
戻り値
hasRole
追加バージョン: v1.44Locator が指定された ARIA ロール を持つ要素を指していることを保証します。
ロールは文字列として一致し、ARIA ロール階層は無視されることに注意してください。たとえば、サブクラスロール "switch" を持つ要素に対してスーパークラスロール "checkbox" をアサートすると失敗します。
使用法
Locator locator = page.getByTestId("save-button");
assertThat(locator).hasRole(AriaRole.BUTTON);
引数
-
roleenum AriaRole { 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ロール。
-
optionsLocatorAssertions.HasRoleOptions(任意)
戻り値
hasText
追加バージョン: v1.20Locator が指定されたテキストを持つ要素を指していることを保証します。要素のテキストコンテンツを計算する際には、すべてのネストされた要素が考慮されます。値に正規表現を使用することもできます。
使用法
assertThat(page.locator(".title")).hasText("Welcome, Test User");
assertThat(page.locator(".title")).hasText(Pattern.compile("Welcome, .*"));
配列を期待値として渡した場合、期待値は次のとおりです。
- Locator は要素のリストに解決されます。
- 要素の数は、配列内の期待値の数と等しくなります。
- リスト内の要素は、期待される配列の値を1つずつ順番に一致させます。
たとえば、次のリストを考えます。
<ul>
<li>Text 1</li>
<li>Text 2</li>
<li>Text 3</li>
</ul>
アサーションをどのように使用できるか見てみましょう。
// ✓ Has the right items in the right order
assertThat(page.locator("ul > li")).hasText(new String[] {"Text 1", "Text 2", "Text 3"});
// ✖ Wrong order
assertThat(page.locator("ul > li")).hasText(new String[] {"Text 3", "Text 2", "Text 1"});
// ✖ Last item does not match
assertThat(page.locator("ul > li")).hasText(new String[] {"Text 1", "Text 2", "Text"});
// ✖ Locator points to the outer list element, not to the list items
assertThat(page.locator("ul")).hasText(new String[] {"Text 1", "Text 2", "Text 3"});
引数
-
expectedString | Pattern | String[] | Pattern[]追加: v1.18#期待される文字列または正規表現、またはそれらのリスト。
-
optionsLocatorAssertions.HasTextOptions(任意)-
setIgnoreCaseboolean (任意)追加日: v1.23#大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
setTimeoutdouble (オプション)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。 -
setUseInnerTextboolean (任意)追加: v1.18#DOM ノードのテキストを取得するときに
element.textContentの代わりにelement.innerTextを使用するかどうか。
-
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
hasValue
追加バージョン: v1.20Locator が指定された入力値を持つ要素を指していることを保証します。値に正規表現を使用することもできます。
使用法
assertThat(page.locator("input[type=number]")).hasValue(Pattern.compile("[0-9]"));
引数
戻り値
hasValues
追加日: v1.23Locator が複数選択/コンボボックス (つまり、multiple 属性を持つ select) を指しており、指定された値が選択されていることを保証します。
使用法
たとえば、次の要素を考えます。
<select id="favorite-colors" multiple>
<option value="R">Red</option>
<option value="G">Green</option>
<option value="B">Blue</option>
</select>
page.locator("id=favorite-colors").selectOption(new String[]{"R", "G"});
assertThat(page.locator("id=favorite-colors")).hasValues(new Pattern[] { Pattern.compile("R"), Pattern.compile("G") });
引数
-
現在選択されている期待されるオプション。
-
optionsLocatorAssertions.HasValuesOptions(任意)
戻り値
isAttached
追加バージョン: v1.33Locator が Document または ShadowRoot に 接続されている 要素を指していることを保証します。
使用法
assertThat(page.getByText("Hidden text")).isAttached();
引数
optionsLocatorAssertions.IsAttachedOptions(任意)
戻り値
isChecked
追加バージョン: v1.20Locator がチェックされた入力を指していることを保証します。
使用法
assertThat(page.getByLabel("Subscribe to newsletter")).isChecked();
引数
optionsLocatorAssertions.IsCheckedOptions(任意)-
setCheckedboolean (任意)追加: v1.18#アサートする状態を提供します。デフォルトでは、入力がチェックされていることをアサートします。このオプションは、setIndeterminate が true に設定されている場合は使用できません。
-
setIndeterminateboolean (任意)追加バージョン: v1.50#要素が不確定 (混在) 状態であることをアサートします。チェックボックスとラジオボタンのみがサポートされます。このオプションは、setChecked が提供されている場合は true にできません。
-
setTimeoutdouble (オプション)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
isDisabled
追加バージョン: v1.20Locator が無効な要素を指していることを保証します。要素は、「disabled」属性を持つ場合、または 'aria-disabled' 経由で無効にされている場合に無効になります。HTML button、input、select、textarea、option、optgroup などのネイティブコントロール要素のみが「disabled」属性を設定することで無効にできることに注意してください。他の要素の「disabled」属性はブラウザによって無視されます。
使用法
assertThat(page.locator("button.submit")).isDisabled();
引数
optionsLocatorAssertions.IsDisabledOptions(任意)
戻り値
isEditable
追加バージョン: v1.20Locator が編集可能な要素を指していることを保証します。
使用法
assertThat(page.getByRole(AriaRole.TEXTBOX)).isEditable();
引数
optionsLocatorAssertions.IsEditableOptions(任意)
戻り値
isEmpty
追加バージョン: v1.20Locator が空の編集可能な要素、またはテキストを持たない DOM ノードを指していることを保証します。
使用法
assertThat(page.locator("div.warning")).isEmpty();
引数
optionsLocatorAssertions.IsEmptyOptions(任意)
戻り値
isEnabled
追加バージョン: v1.20Locator が有効な要素を指していることを保証します。
使用法
assertThat(page.locator("button.submit")).isEnabled();
引数
optionsLocatorAssertions.IsEnabledOptions(任意)
戻り値
isFocused
追加バージョン: v1.20Locator がフォーカスされた DOM ノードを指していることを保証します。
使用法
assertThat(page.getByRole(AriaRole.TEXTBOX)).isFocused();
引数
optionsLocatorAssertions.IsFocusedOptions(任意)
戻り値
isHidden
追加バージョン: v1.20Locator がどの DOM ノードにも解決されないか、または 非表示 の DOM ノードに解決されることを保証します。
使用法
assertThat(page.locator(".my-element")).isHidden();
引数
optionsLocatorAssertions.IsHiddenOptions(任意)
戻り値
isInViewport
追加バージョン: v1.31Locator が、Intersection Observer API に従って、ビューポートと交差する要素を指していることを保証します。
使用法
Locator locator = page.getByRole(AriaRole.BUTTON);
// Make sure at least some part of element intersects viewport.
assertThat(locator).isInViewport();
// Make sure element is fully outside of viewport.
assertThat(locator).not().isInViewport();
// Make sure that at least half of the element intersects viewport.
assertThat(locator).isInViewport(new LocatorAssertions.IsInViewportOptions().setRatio(0.5));
引数
optionsLocatorAssertions.IsInViewportOptions(任意)
戻り値
isVisible
追加バージョン: v1.20Locator が、アタッチされ、可視 の DOM ノードを指していることを保証します。
リスト内の少なくとも1つの要素が可視であることを確認するには、Locator.first() を使用します。
使用法
// A specific element is visible.
assertThat(page.getByText("Welcome")).isVisible();
// At least one item in the list is visible.
assertThat(page.getByTestId("todo-item").first()).isVisible();
// At least one of the two elements is visible, possibly both.
assertThat(
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Sign in"))
.or(page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Sign up")))
.first()
).isVisible();
引数
optionsLocatorAssertions.IsVisibleOptions(任意)
戻り値
matchesAriaSnapshot
追加バージョン: v1.49ターゲット要素が指定された アクセシビリティスナップショット と一致することをアサートします。
使用法
page.navigate("https://demo.playwright.dev/todomvc/");
assertThat(page.locator("body")).matchesAriaSnapshot("""
- heading "todos"
- textbox "What needs to be done?"
""");
引数
戻り値
プロパティ
not()
追加バージョン: v1.20アサーションが反対の条件をチェックするようにします。たとえば、このコードは Locator がテキスト "error" を含まないことをテストします。
assertThat(locator).not().containsText("error");
使用法
assertThat(locator).not()
戻り値