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

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

メソッド

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#

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

  • 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 属性と完全に一致する必要があります。個々のクラスを一致させるか、部分一致を実行するには、正規表現を使用します。

使用法

<div class='middle selected row' id='component'></div>
assertThat(page.locator("#component")).hasClass(Pattern.compile("(^|\\s)selected(\\s|$)"));
assertThat(page.locator("#component")).hasClass("middle selected row");

配列が渡された場合、このメソッドは、配置された要素のリストが、対応する期待されるクラス値のリストと一致することをアサートします。各要素の class 属性は、配列内の対応する文字列または正規表現と照合されます。

assertThat(page.locator("list > .component")).hasClass(new String[] {"component", "component selected", "component"});

引数

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

    期待されるクラスまたは RegExp、またはそれらのリスト。

  • 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#

    期待される文字列または RegExp、またはそれらのリスト。

  • 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 ノードに解決されないか、非表示のノードに解決されることを保証します。

使用法

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()

戻り値