LocatorAssertions
LocatorAssertions クラスは、テストで Locator の状態についてアサーションを行うために使用できるアサーションメソッドを提供します。
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
namespace PlaywrightTests;
[TestClass]
public class ExampleTests : PageTest
{
[TestMethod]
public async Task StatusBecomesSubmitted()
{
// ...
await Page.GetByRole(AriaRole.Button, new() { Name = "Sign In" }).ClickAsync();
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
}
}
メソッド
ToBeAttachedAsync
追加バージョン: v1.33Locator が、Document または ShadowRoot に 接続されている 要素を指していることを保証します。
使用法
await Expect(Page.GetByText("Hidden text")).ToBeAttachedAsync();
引数
optionsLocatorAssertionsToBeAttachedOptions?(任意)
戻り値
ToBeCheckedAsync
追加バージョン: v1.20Locator がチェックされた入力を指していることを保証します。
使用法
var locator = Page.GetByLabel("Subscribe to newsletter");
await Expect(locator).ToBeCheckedAsync();
引数
optionsLocatorAssertionsToBeCheckedOptions?(任意)-
アサートする状態を提供します。デフォルトでは、入力がチェックされていることをアサートします。Indeterminate が true に設定されている場合、このオプションは使用できません。
-
Indeterminatebool? (任意)追加バージョン: v1.50#要素が不定 (混合) 状態であることをアサートします。チェックボックスとラジオボタンのみがサポートされます。Checked が提供されている場合、このオプションは true にできません。
-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToBeDisabledAsync
追加バージョン: v1.20Locator が無効な要素を指していることを保証します。要素は "disabled" 属性を持つか、'aria-disabled' を介して無効になっている場合に無効です。"disabled" 属性を設定することで無効にできるのは、HTML button、input、select、textarea、option、optgroup などのネイティブコントロール要素のみであることに注意してください。他の要素の "disabled" 属性はブラウザによって無視されます。
使用法
var locator = Page.Locator("button.submit");
await Expect(locator).ToBeDisabledAsync();
引数
optionsLocatorAssertionsToBeDisabledOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToBeEditableAsync
追加バージョン: v1.20Locator が編集可能な要素を指していることを保証します。
使用法
var locator = Page.GetByRole(AriaRole.Textbox);
await Expect(locator).ToBeEditableAsync();
引数
optionsLocatorAssertionsToBeEditableOptions?(任意)
戻り値
ToBeEmptyAsync
追加バージョン: v1.20Locator が空の編集可能な要素、またはテキストがない DOM ノードを指していることを保証します。
使用法
var locator = Page.Locator("div.warning");
await Expect(locator).ToBeEmptyAsync();
引数
optionsLocatorAssertionsToBeEmptyOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToBeEnabledAsync
追加バージョン: v1.20Locator が有効な要素を指していることを保証します。
使用法
var locator = Page.Locator("button.submit");
await Expect(locator).ToBeEnabledAsync();
引数
optionsLocatorAssertionsToBeEnabledOptions?(任意)
戻り値
ToBeFocusedAsync
追加バージョン: v1.20Locator がフォーカスされた DOM ノードを指していることを保証します。
使用法
var locator = Page.GetByRole(AriaRole.Textbox);
await Expect(locator).ToBeFocusedAsync();
引数
optionsLocatorAssertionsToBeFocusedOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToBeHiddenAsync
追加バージョン: v1.20Locator がどの DOM ノードにも解決しないか、または 非表示 の DOM ノードに解決することを保証します。
使用法
var locator = Page.Locator(".my-element");
await Expect(locator).ToBeHiddenAsync();
引数
optionsLocatorAssertionsToBeHiddenOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToBeInViewportAsync
追加バージョン: v1.31Locator が、Intersection Observer API に従ってビューポートと交差する要素を指していることを保証します。
使用法
var locator = Page.GetByRole(AriaRole.Button);
// Make sure at least some part of element intersects viewport.
await Expect(locator).ToBeInViewportAsync();
// Make sure element is fully outside of viewport.
await Expect(locator).Not.ToBeInViewportAsync();
// Make sure that at least half of the element intersects viewport.
await Expect(locator).ToBeInViewportAsync(new() { Ratio = 0.5 });
引数
optionsLocatorAssertionsToBeInViewportOptions?(任意)
戻り値
ToBeVisibleAsync
追加バージョン: v1.20Locator が、添付されていて 表示されている DOM ノードを指していることを保証します。
リスト内の少なくとも1つの要素が可視であることを確認するには、Locator.First を使用します。
使用法
// A specific element is visible.
await Expect(Page.GetByText("Welcome")).ToBeVisibleAsync();
// At least one item in the list is visible.
await Expect(Page.GetByTestId("todo-item").First).ToBeVisibleAsync();
// At least one of the two elements is visible, possibly both.
await Expect(
Page.GetByRole(AriaRole.Button, new() { Name = "Sign in" })
.Or(Page.GetByRole(AriaRole.Button, new() { Name = "Sign up" }))
.First
).ToBeVisibleAsync();
引数
optionsLocatorAssertionsToBeVisibleOptions?(任意)
戻り値
ToContainClassAsync
追加バージョン: v1.52Locator が指定された CSS クラスを持つ要素を指していることを保証します。アサートされた値のすべてのクラス (スペースで区切られたもの) が、Element.classList に任意の順序で存在する必要があります。
使用法
<div class='middle selected row' id='component'></div>
var locator = Page.Locator("#component");
await Expect(locator).ToContainClassAsync("middle selected row");
await Expect(locator).ToContainClassAsync("selected");
await Expect(locator).ToContainClassAsync("row middle");
配列が渡される場合、このメソッドは、特定された要素のリストが対応する期待されるクラスリストのリストと一致することをアサートします。各要素の class 属性は、配列内の対応するクラスと一致します。
<div class='list'>
<div class='component inactive'></div>
<div class='component active'></div>
<div class='component inactive'></div>
</div>
var locator = Page.Locator(".list > .component");
await Expect(locator).ToContainClassAsync(new string[]{"inactive", "active", "inactive"});
引数
-
expectedstring | IEnumerable<string>#スペースで区切られた期待されるクラス名を含む文字列、または複数の要素をアサートするためのそのような文字列のリスト。
-
optionsLocatorAssertionsToContainClassOptions?(任意)-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToContainTextAsync
追加バージョン: v1.20Locator が指定されたテキストを含む要素を指していることを保証します。要素のテキストコンテンツを計算する際、すべてのネストされた要素が考慮されます。値に正規表現も使用できます。
使用法
var locator = Page.Locator(".title");
await Expect(locator).ToContainTextAsync("substring");
await Expect(locator).ToContainTextAsync(new Regex("\\d messages"));
配列を期待値として渡した場合、期待値は次のとおりです。
- 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
await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Text 1", "Text 3", "Text 4"});
// ✖ Wrong order
await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Text 3", "Text 2"});
// ✖ No item contains this text
await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Some 33"});
// ✖ Locator points to the outer list element, not to the list items
await Expect(Page.Locator("ul")).ToContainTextAsync(new string[] {"Text 3"});
引数
-
expectedstring | Regex | IEnumerable<string> | IEnumerable<Regex>追加: v1.18#期待される部分文字列または正規表現、またはそれらのリスト。
-
optionsLocatorAssertionsToContainTextOptions?(任意)
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
ToHaveAccessibleDescriptionAsync
追加バージョン: v1.44Locator が指定された アクセシブルな説明 を持つ要素を指していることを保証します。
使用法
var locator = Page.GetByTestId("save-button");
await Expect(locator).ToHaveAccessibleDescriptionAsync("Save results to disk");
引数
-
期待されるアクセシブルな説明。
-
optionsLocatorAssertionsToHaveAccessibleDescriptionOptions?(任意)-
大文字小文字を区別しない一致を実行するかどうか。IgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveAccessibleErrorMessageAsync
追加バージョン: v1.50Locator が指定された aria エラーメッセージ を持つ要素を指していることを保証します。
使用法
var locator = Page.GetByTestId("username-input");
await Expect(locator).ToHaveAccessibleErrorMessageAsync("Username is required.");
引数
-
期待されるアクセシブルなエラーメッセージ。
-
optionsLocatorAssertionsToHaveAccessibleErrorMessageOptions?(任意)-
大文字小文字を区別しない一致を実行するかどうか。IgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveAccessibleNameAsync
追加バージョン: v1.44Locator が指定された アクセシブルな名前 を持つ要素を指していることを保証します。
使用法
var locator = Page.GetByTestId("save-button");
await Expect(locator).ToHaveAccessibleNameAsync("Save to disk");
引数
-
期待されるアクセシブルな名前。
-
optionsLocatorAssertionsToHaveAccessibleNameOptions?(任意)-
大文字小文字を区別しない一致を実行するかどうか。IgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveAttributeAsync
追加バージョン: v1.20Locator が指定された属性を持つ要素を指していることを保証します。
使用法
var locator = Page.Locator("input");
await Expect(locator).ToHaveAttributeAsync("type", "text");
引数
-
属性名。
-
valuestring | Regex追加: v1.18#期待される属性値。
-
optionsLocatorAssertionsToHaveAttributeOptions?(任意)-
IgnoreCasebool? (任意)追加されたバージョン: v1.40#大文字小文字を区別しない一致を実行するかどうか。IgnoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveClassAsync
追加バージョン: v1.20Locator が指定された CSS クラスを持つ要素を指していることを保証します。文字列が提供された場合、要素の class 属性と完全に一致する必要があります。個々のクラスと一致させるには、Expect(Locator).ToContainClassAsync() を使用します。
使用法
<div class='middle selected row' id='component'></div>
var locator = Page.Locator("#component");
await Expect(locator).ToHaveClassAsync("middle selected row");
await Expect(locator).ToHaveClassAsync(new Regex("(^|\\s)selected(\\s|$)"));
配列が渡される場合、このメソッドは、特定された要素のリストが、期待されるクラス値の対応するリストと一致することをアサートします。各要素のクラス属性は、配列内の対応する文字列または正規表現と一致します。
var locator = Page.Locator(".list > .component");
await Expect(locator).ToHaveClassAsync(new string[]{"component", "component selected", "component"});
引数
-
expectedstring | Regex | IEnumerable<string> | IEnumerable<Regex>追加: v1.18#期待されるクラスまたは正規表現、またはそれらのリスト。
-
optionsLocatorAssertionsToHaveClassOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveCountAsync
追加バージョン: v1.20Locator が正確な数の DOM ノードに解決されることを保証します。
使用法
var locator = Page.Locator("list > .component");
await Expect(locator).ToHaveCountAsync(3);
引数
-
期待される数。
-
optionsLocatorAssertionsToHaveCountOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveCSSAsync
追加バージョン: v1.20Locator が指定された計算済み CSS スタイルを持つ要素に解決されることを保証します。
使用法
var locator = Page.GetByRole(AriaRole.Button);
await Expect(locator).ToHaveCSSAsync("display", "flex");
引数
-
CSS プロパティ名。
-
valuestring | Regex追加: v1.18#CSS プロパティ値。
-
optionsLocatorAssertionsToHaveCSSOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveIdAsync
追加バージョン: v1.20Locator が指定された DOM ノード ID を持つ要素を指していることを保証します。
使用法
var locator = Page.GetByRole(AriaRole.Textbox);
await Expect(locator).ToHaveIdAsync("lastname");
引数
-
要素 ID。
-
optionsLocatorAssertionsToHaveIdOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveJSPropertyAsync
追加バージョン: v1.20Locator が指定された JavaScript プロパティを持つ要素を指していることを保証します。このプロパティは、プリミティブ型だけでなく、プレーンなシリアライズ可能な JavaScript オブジェクトでもかまいません。
使用法
var locator = Page.Locator(".component");
await Expect(locator).ToHaveJSPropertyAsync("loaded", true);
引数
-
プロパティ名。
-
value[object]追加: v1.18#プロパティ値。
-
optionsLocatorAssertionsToHaveJSPropertyOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveRoleAsync
追加バージョン: v1.44Locator が指定された ARIA ロール を持つ要素を指していることを保証します。
ロールは文字列として一致し、ARIA ロール階層は無視されることに注意してください。たとえば、サブクラスロール "switch" を持つ要素に対してスーパークラスロール "checkbox" をアサートすると失敗します。
使用法
var locator = Page.GetByTestId("save-button");
await Expect(locator).ToHaveRoleAsync(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ロール。
-
optionsLocatorAssertionsToHaveRoleOptions?(任意)-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveTextAsync
追加バージョン: v1.20Locator が指定されたテキストを持つ要素を指していることを保証します。要素のテキストコンテンツを計算する際、すべてのネストされた要素が考慮されます。値に正規表現も使用できます。
使用法
var locator = Page.Locator(".title");
await Expect(locator).ToHaveTextAsync(new Regex("Welcome, Test User"));
await Expect(locator).ToHaveTextAsync(new Regex("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
await Expect(Page.Locator("ul > li")).ToHaveTextAsync(new string[] {"Text 1", "Text 2", "Text 3"});
// ✖ Wrong order
await Expect(Page.Locator("ul > li")).ToHaveTextAsync(new string[] {"Text 3", "Text 2", "Text 1"});
// ✖ Last item does not match
await Expect(Page.Locator("ul > li")).ToHaveTextAsync(new string[] {"Text 1", "Text 2", "Text"});
// ✖ Locator points to the outer list element, not to the list items
await Expect(Page.Locator("ul")).ToHaveTextAsync(new string[] {"Text 1", "Text 2", "Text 3"});
引数
-
expectedstring | Regex | IEnumerable<string> | IEnumerable<Regex>追加: v1.18#期待される文字列または正規表現、またはそれらのリスト。
-
optionsLocatorAssertionsToHaveTextOptions?(任意)
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
ToHaveValueAsync
追加バージョン: v1.20Locator が指定された入力値を持つ要素を指していることを保証します。値に正規表現も使用できます。
使用法
var locator = Page.Locator("input[type=number]");
await Expect(locator).ToHaveValueAsync(new Regex("[0-9]"));
引数
-
valuestring | Regex追加: v1.18#期待される値。
-
optionsLocatorAssertionsToHaveValueOptions?(任意)-
Timeout[float]? (任意)追加: v1.18#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToHaveValuesAsync
追加日: 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>
var locator = Page.Locator("id=favorite-colors");
await locator.SelectOptionAsync(new string[] { "R", "G" });
await Expect(locator).ToHaveValuesAsync(new Regex[] { new Regex("R"), new Regex("G") });
引数
-
valuesIEnumerable<string> | IEnumerable<Regex>#現在選択されている期待されるオプション。
-
optionsLocatorAssertionsToHaveValuesOptions?(任意)-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
ToMatchAriaSnapshotAsync
追加バージョン: v1.49ターゲット要素が指定された アクセシビリティスナップショット と一致することをアサートします。
使用法
await page.GotoAsync("https://demo.playwright.dev/todomvc/");
await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@"
- heading ""todos""
- textbox ""What needs to be done?""
");
引数
expectedstring#optionsLocatorAssertionsToMatchAriaSnapshotOptions?(任意)-
Timeout[float]? (任意)#アサーションを再試行する時間(ミリ秒単位)。デフォルトは
5000です。
-
戻り値
プロパティ
Not
追加バージョン: v1.20アサーションが反対の条件をチェックするようにします。たとえば、このコードは Locator がテキスト "error" を含まないことをテストします。
await Expect(locator).Not.ToContainTextAsync("error");
使用法
Expect(Locator).Not
タイプ