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

ページオブジェクトモデル

はじめに

大規模なテストスイートは、作成とメンテナンスの容易さを最適化するように構成できます。ページオブジェクトモデルは、テストスイートを構成するそのようなアプローチの1つです。

ページオブジェクトは、Webアプリケーションの一部を表します。EコマースのWebアプリケーションには、ホームページ、リストページ、チェックアウトページがあるかもしれません。これらはそれぞれ、ページオブジェクトモデルで表すことができます。

ページオブジェクトは、アプリケーションに合わせた上位レベルのAPIを作成することで作成を簡素化し、要素セレクターを一箇所にまとめることでメンテナンスを簡素化し、繰り返しを避けるための再利用可能なコードを作成します。

実装

ページオブジェクトモデルは、PlaywrightのPageをラップします。

using System.Threading.Tasks;
using Microsoft.Playwright;

namespace BigEcommerceApp.Tests.Models;

public class SearchPage
{
private readonly IPage _page;
private readonly ILocator _searchTermInput;

public SearchPage(IPage page)
{
_page = page;
_searchTermInput = page.Locator("[aria-label='Enter your search term']");
}

public async Task GotoAsync()
{
await _page.GotoAsync("https://bing.com");
}

public async Task SearchAsync(string text)
{
await _searchTermInput.FillAsync(text);
await _searchTermInput.PressAsync("Enter");
}
}

ページオブジェクトは、テスト内で使用できます。

using BigEcommerceApp.Tests.Models;

// in the test
var page = new SearchPage(await browser.NewPageAsync());
await page.GotoAsync();
await page.SearchAsync("search query");