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

LocatorAssertions

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

配列が渡された場合、このメソッドは、特定された要素のリストが、期待されるクラスリストの対応するリストと一致することをアサートします。各要素のクラス属性は、配列内の対応するクラスと一致します

<div class='list'></div>
<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 (optional)

    • setTimeout double (optional)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは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 (optional)

    • setIgnoreCase boolean (optional)追加バージョン: v1.23#

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

    • setTimeout double (optional)追加バージョン: v1.18#

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

    • setUseInnerText boolean (optional)追加バージョン: 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 (optional)

    • setIgnoreCase boolean (optional)#

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

    • setTimeout double (optional)#

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

戻り値


hasAccessibleErrorMessage

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

Locatorが指定されたARIAエラーメッセージを持つ要素を指していることを保証します。

使用法

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

引数

  • errorMessage String | Pattern#

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

  • options LocatorAssertions.HasAccessibleErrorMessageOptions (optional)

    • setIgnoreCase boolean (optional)#

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

    • setTimeout double (optional)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは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 (optional)

    • setIgnoreCase boolean (optional)#

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

    • setTimeout double (optional)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは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 (optional)

    • setIgnoreCase boolean (optional)追加バージョン: v1.40#

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

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


hasCount

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

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

使用法

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

引数

  • count int追加バージョン: v1.18#

    期待される数。

  • options LocatorAssertions.HasCountOptions (optional)

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは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 (optional)

    • setIgnoreCase boolean (optional)追加バージョン: v1.23#

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

    • setTimeout double (optional)追加バージョン: v1.18#

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

    • setUseInnerText boolean (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)追加バージョン: 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 (optional)

    • setTimeout double (optional)#

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

戻り値


isAttached

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

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

使用法

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

引数

  • options LocatorAssertions.IsAttachedOptions (optional)
    • setAttached boolean (optional)#

    • setTimeout double (optional)#

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

戻り値


isChecked

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

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

使用法

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

引数

  • options LocatorAssertions.IsCheckedOptions (optional)
    • setChecked boolean (optional)追加バージョン: v1.18#

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

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

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

    • setTimeout double (optional)追加バージョン: 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 (optional)
    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


isEditable

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

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

使用法

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

引数

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

    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


isEmpty

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

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

使用法

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

引数

  • options LocatorAssertions.IsEmptyOptions (optional)
    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


isEnabled

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

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

使用法

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

引数

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

    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


isFocused

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

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

使用法

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

引数

  • options LocatorAssertions.IsFocusedOptions (optional)
    • setTimeout double (optional)追加バージョン: v1.18#

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

戻り値


isHidden

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

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

使用法

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

引数

  • options LocatorAssertions.IsHiddenOptions (optional)
    • setTimeout double (optional)追加バージョン: 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 (optional)
    • setRatio double (optional)#

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

    • setTimeout double (optional)#

      アサーションを再試行する時間(ミリ秒単位)。デフォルトは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 (optional)
    • setTimeout double (optional)追加バージョン: v1.18#

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

    • setVisible boolean (optional)追加バージョン: 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 (optional)
    • setTimeout double (optional)#

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

戻り値


プロパティ

not()

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

アサーションを逆の条件でチェックします。例えば、このコードはLocatorがテキスト"error"を含まないことをテストします。

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

使用法

assertThat(locator).not()

戻り値