メインコンテンツにスキップ

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.52 locatorAssertions.containsClass

Locator が指定された 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"});

引数

  • expected String | List<String>#

    スペースで区切られた期待されるクラス名を含む文字列、または複数の要素をアサートするためのそのような文字列のリスト。

  • options LocatorAssertions.ContainsClassOptions (任意)

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


containsText

追加バージョン: v1.20 locatorAssertions.containsText

Locator が指定されたテキストを含む要素を指していることを保証します。要素のテキストコンテンツを計算する際には、すべてのネストされた要素が考慮されます。値に正規表現を使用することもできます。

使用法

assertThat(page.locator(".title")).containsText("substring");

配列を期待値として渡した場合、期待値は次のとおりです。

  1. Locator は要素のリストに解決されます。
  2. このリストの**サブセット**の要素は、それぞれ期待される配列のテキストを含みます。
  3. 一致する要素のサブセットは、期待される配列と同じ順序になります。
  4. 期待される配列の各テキスト値は、リスト内のいずれかの要素によって一致します。

たとえば、次のリストを考えます。

<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"});

引数

  • expected String | Pattern | String[] | Pattern[]追加: v1.18#

    期待される部分文字列または正規表現、またはそれらのリスト。

  • options LocatorAssertions.ContainsTextOptions (任意)

    • setIgnoreCase boolean (任意)追加日: v1.23#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

    • setUseInnerText boolean (任意)追加: v1.18#

      DOM ノードのテキストを取得するときに element.textContent の代わりに element.innerText を使用するかどうか。

戻り値

詳細

expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。


hasAccessibleDescription

追加バージョン: v1.44 locatorAssertions.hasAccessibleDescription

Locator が指定された アクセシブルな説明 を持つ要素を指していることを保証します。

使用法

Locator locator = page.getByTestId("save-button");
assertThat(locator).hasAccessibleDescription("Save results to disk");

引数

  • description String | Pattern#

    期待されるアクセシブルな説明。

  • options LocatorAssertions.HasAccessibleDescriptionOptions (任意)

    • setIgnoreCase boolean (任意)#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasAccessibleErrorMessage

追加バージョン: v1.50 locatorAssertions.hasAccessibleErrorMessage

Locator が指定された aria errormessage を持つ要素を指していることを保証します。

使用法

Locator locator = page.getByTestId("username-input");
assertThat(locator).hasAccessibleErrorMessage("Username is required.");

引数

  • errorMessage String | Pattern#

    期待されるアクセシブルなエラーメッセージ。

  • options LocatorAssertions.HasAccessibleErrorMessageOptions (任意)

    • setIgnoreCase boolean (任意)#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasAccessibleName

追加バージョン: v1.44 locatorAssertions.hasAccessibleName

Locator が指定された アクセシブルな名前 を持つ要素を指していることを保証します。

使用法

Locator locator = page.getByTestId("save-button");
assertThat(locator).hasAccessibleName("Save to disk");

引数

  • name String | Pattern#

    期待されるアクセシブルな名前。

  • options LocatorAssertions.HasAccessibleNameOptions (任意)

    • setIgnoreCase boolean (任意)#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasAttribute

追加バージョン: v1.20 locatorAssertions.hasAttribute

Locator が指定された属性を持つ要素を指していることを保証します。

使用法

assertThat(page.locator("input")).hasAttribute("type", "text");

引数

  • name String追加: v1.18#

    属性名。

  • value String | Pattern追加: v1.18#

    期待される属性値。

  • options LocatorAssertions.HasAttributeOptions (任意)

    • setIgnoreCase boolean (任意)追加されたバージョン: v1.40#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasClass

追加バージョン: v1.20 locatorAssertions.hasClass

Locator が指定された 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"});

引数

  • expected String | Pattern | String[] | Pattern[]追加: v1.18#

    期待されるクラスまたは正規表現、またはそれらのリスト。

  • options LocatorAssertions.HasClassOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasCount

追加バージョン: v1.20 locatorAssertions.hasCount

Locator が正確な数の DOM ノードに解決されることを保証します。

使用法

assertThat(page.locator("list > .component")).hasCount(3);

引数

  • count int追加: v1.18#

    期待される数。

  • options LocatorAssertions.HasCountOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasCSS

追加バージョン: v1.20 locatorAssertions.hasCSS

Locator が指定された計算済み CSS スタイルを持つ要素に解決されることを保証します。

使用法

assertThat(page.getByRole(AriaRole.BUTTON)).hasCSS("display", "flex");

引数

  • name String追加: v1.18#

    CSS プロパティ名。

  • value String | Pattern追加: v1.18#

    CSS プロパティ値。

  • options LocatorAssertions.HasCSSOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasId

追加バージョン: v1.20 locatorAssertions.hasId

Locator が指定された DOM ノード ID を持つ要素を指していることを保証します。

使用法

assertThat(page.getByRole(AriaRole.TEXTBOX)).hasId("lastname");

引数

  • id String | Pattern追加: v1.18#

    要素 ID。

  • options LocatorAssertions.HasIdOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasJSProperty

追加バージョン: v1.20 locatorAssertions.hasJSProperty

Locator が指定された JavaScript プロパティを持つ要素を指していることを保証します。このプロパティは、プリミティブ型だけでなく、プレーンなシリアライズ可能な JavaScript オブジェクトであることもできます。

使用法

assertThat(page.locator("input")).hasJSProperty("loaded", true);

引数

  • name String追加: v1.18#

    プロパティ名。

  • value Object追加: v1.18#

    プロパティ値。

  • options LocatorAssertions.HasJSPropertyOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasRole

追加バージョン: v1.44 locatorAssertions.hasRole

Locator が指定された ARIA ロール を持つ要素を指していることを保証します。

ロールは文字列として一致し、ARIA ロール階層は無視されることに注意してください。たとえば、サブクラスロール "switch" を持つ要素に対してスーパークラスロール "checkbox" をアサートすると失敗します。

使用法

Locator locator = page.getByTestId("save-button");
assertThat(locator).hasRole(AriaRole.BUTTON);

引数

  • role enum 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ロール。

  • options LocatorAssertions.HasRoleOptions (任意)

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasText

追加バージョン: v1.20 locatorAssertions.hasText

Locator が指定されたテキストを持つ要素を指していることを保証します。要素のテキストコンテンツを計算する際には、すべてのネストされた要素が考慮されます。値に正規表現を使用することもできます。

使用法

assertThat(page.locator(".title")).hasText("Welcome, Test User");
assertThat(page.locator(".title")).hasText(Pattern.compile("Welcome, .*"));

配列を期待値として渡した場合、期待値は次のとおりです。

  1. Locator は要素のリストに解決されます。
  2. 要素の数は、配列内の期待値の数と等しくなります。
  3. リスト内の要素は、期待される配列の値を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"});

引数

  • expected String | Pattern | String[] | Pattern[]追加: v1.18#

    期待される文字列または正規表現、またはそれらのリスト。

  • options LocatorAssertions.HasTextOptions (任意)

    • setIgnoreCase boolean (任意)追加日: v1.23#

      大文字と小文字を区別しない一致を実行するかどうか。setIgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

    • setUseInnerText boolean (任意)追加: v1.18#

      DOM ノードのテキストを取得するときに element.textContent の代わりに element.innerText を使用するかどうか。

戻り値

詳細

expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。


hasValue

追加バージョン: v1.20 locatorAssertions.hasValue

Locator が指定された入力値を持つ要素を指していることを保証します。値に正規表現を使用することもできます。

使用法

assertThat(page.locator("input[type=number]")).hasValue(Pattern.compile("[0-9]"));

引数

  • value String | Pattern追加: v1.18#

    期待される値。

  • options LocatorAssertions.HasValueOptions (任意)

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


hasValues

追加日: v1.23 locatorAssertions.hasValues

Locator が複数選択/コンボボックス (つまり、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") });

引数

  • values String[] | Pattern[]#

    現在選択されている期待されるオプション。

  • options LocatorAssertions.HasValuesOptions (任意)

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isAttached

追加バージョン: v1.33 locatorAssertions.isAttached

Locator が Document または ShadowRoot に 接続されている 要素を指していることを保証します。

使用法

assertThat(page.getByText("Hidden text")).isAttached();

引数

  • options LocatorAssertions.IsAttachedOptions (任意)
    • setAttached boolean (任意)#

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isChecked

追加バージョン: v1.20 locatorAssertions.isChecked

Locator がチェックされた入力を指していることを保証します。

使用法

assertThat(page.getByLabel("Subscribe to newsletter")).isChecked();

引数

  • options LocatorAssertions.IsCheckedOptions (任意)
    • setChecked boolean (任意)追加: v1.18#

      アサートする状態を提供します。デフォルトでは、入力がチェックされていることをアサートします。このオプションは、setIndeterminate が true に設定されている場合は使用できません。

    • setIndeterminate boolean (任意)追加バージョン: v1.50#

      要素が不確定 (混在) 状態であることをアサートします。チェックボックスとラジオボタンのみがサポートされます。このオプションは、setChecked が提供されている場合は true にできません。

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isDisabled

追加バージョン: v1.20 locatorAssertions.isDisabled

Locator が無効な要素を指していることを保証します。要素は、「disabled」属性を持つ場合、または 'aria-disabled' 経由で無効にされている場合に無効になります。HTML buttoninputselecttextareaoptionoptgroup などのネイティブコントロール要素のみが「disabled」属性を設定することで無効にできることに注意してください。他の要素の「disabled」属性はブラウザによって無視されます。

使用法

assertThat(page.locator("button.submit")).isDisabled();

引数

  • options LocatorAssertions.IsDisabledOptions (任意)
    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isEditable

追加バージョン: v1.20 locatorAssertions.isEditable

Locator が編集可能な要素を指していることを保証します。

使用法

assertThat(page.getByRole(AriaRole.TEXTBOX)).isEditable();

引数

  • options LocatorAssertions.IsEditableOptions (任意)
    • setEditable boolean (任意)追加バージョン: v1.26#

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isEmpty

追加バージョン: v1.20 locatorAssertions.isEmpty

Locator が空の編集可能な要素、またはテキストを持たない DOM ノードを指していることを保証します。

使用法

assertThat(page.locator("div.warning")).isEmpty();

引数

  • options LocatorAssertions.IsEmptyOptions (任意)
    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isEnabled

追加バージョン: v1.20 locatorAssertions.isEnabled

Locator が有効な要素を指していることを保証します。

使用法

assertThat(page.locator("button.submit")).isEnabled();

引数

  • options LocatorAssertions.IsEnabledOptions (任意)
    • setEnabled boolean (任意)追加バージョン: v1.26#

    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isFocused

追加バージョン: v1.20 locatorAssertions.isFocused

Locator がフォーカスされた DOM ノードを指していることを保証します。

使用法

assertThat(page.getByRole(AriaRole.TEXTBOX)).isFocused();

引数

  • options LocatorAssertions.IsFocusedOptions (任意)
    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isHidden

追加バージョン: v1.20 locatorAssertions.isHidden

Locator がどの DOM ノードにも解決されないか、または 非表示 の DOM ノードに解決されることを保証します。

使用法

assertThat(page.locator(".my-element")).isHidden();

引数

  • options LocatorAssertions.IsHiddenOptions (任意)
    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isInViewport

追加バージョン: v1.31 locatorAssertions.isInViewport

Locator が、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));

引数

  • options LocatorAssertions.IsInViewportOptions (任意)
    • setRatio double (任意)#

      要素がビューポートと交差する最小比率。0 の場合、要素は任意の正の比率でビューポートと交差する必要があります。デフォルトは 0 です。

    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


isVisible

追加バージョン: v1.20 locatorAssertions.isVisible

Locator が、アタッチされ、可視 の 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();

引数

  • options LocatorAssertions.IsVisibleOptions (任意)
    • setTimeout double (オプション)追加: v1.18#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

    • setVisible boolean (任意)追加バージョン: v1.26#

戻り値


matchesAriaSnapshot

追加バージョン: v1.49 locatorAssertions.matchesAriaSnapshot

ターゲット要素が指定された アクセシビリティスナップショット と一致することをアサートします。

使用法

page.navigate("https://demo.playwright.dev/todomvc/");
assertThat(page.locator("body")).matchesAriaSnapshot("""
- heading "todos"
- textbox "What needs to be done?"
""");

引数

  • expected String#
  • options LocatorAssertions.MatchesAriaSnapshotOptions (任意)
    • setTimeout double (任意)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは5000です。

戻り値


プロパティ

not()

追加バージョン: v1.20 locatorAssertions.not()

アサーションが反対の条件をチェックするようにします。たとえば、このコードは Locator がテキスト "error" を含まないことをテストします。

assertThat(locator).not().containsText("error");

使用法

assertThat(locator).not()

戻り値