スポンサーリンク

Playwrightで要素をクリック・入力する方法(.NET / C#)

この記事は「Reqnroll × Playwrightで始めるE2Eテスト入門」シリーズの一部です。

Playwrightで要素をクリック・入力する方法(.NET / C#)

Playwrightを使ったE2Eテストでは、画面の要素をクリックしたり、テキストを入力する操作が頻繁に登場します。

例えば、次のような操作です。

  • ボタンをクリックする
  • テキストボックスに入力する
  • 検索フォームに文字を入力する
  • ログインフォームにIDとパスワードを入力する

この記事では、.NET(C#)のPlaywrightで要素をクリック・入力する基本的な方法を解説します。

なお、この記事では IPage オブジェクトはすでに利用できる前提とします。
Playwrightの起動処理については、以下の別記事で解説している PlaywrightHooks クラスを使用します。

.NETのReqnrollプロジェクトでPlaywrightを使うときのコード構成(基本)

Playwrightで要素を操作する基本

Playwrightでは、ページ内の要素をセレクタで取得して操作します。

基本の流れは次の通りです。

  1. 要素をセレクタで指定
  2. Playwrightのメソッドで操作

await PlaywrightHooks.Page.ClickAsync("button");

このコードは、ページ内の button 要素をクリックします。

要素をクリックする

ボタンなどの要素をクリックするには ClickAsync を使います。

await PlaywrightHooks.Page.ClickAsync("#login-button");

このコードは、IDが login-button の要素をクリックします。

HTML例

<button id="login-button">ログイン</button>

クラス名でクリックする

クラス名を使ってクリックすることもできます。

await PlaywrightHooks.Page.ClickAsync(".submit-button");

HTML例

<button class="submit-button">送信</button>

テキストでクリックする

Playwrightでは、テキストを指定してクリックすることも可能です。

await PlaywrightHooks.Page.ClickAsync("text=ログイン");

この場合、表示テキストが「ログイン」の要素をクリックします。

テキストを入力する

テキストボックスなどに入力する場合は FillAsync を使います。

await PlaywrightHooks.Page.FillAsync("#username", "testuser");

HTML例

<input id="username" type="text">

このコードは、IDが username の入力欄に testuser を入力します。

パスワード入力

パスワード入力も同様です。

await PlaywrightHooks.Page.FillAsync("#password", "password123");

HTML例

<input id="password" type="password">

入力してボタンをクリックする例

ログイン画面の例を考えてみます。

HTML

<input id="username">
<input id="password">
<button id="login-button">ログイン</button>

Playwrightコード

await PlaywrightHooks.Page.FillAsync("#username", "testuser");
await PlaywrightHooks.Page.FillAsync("#password", "password123");

await PlaywrightHooks.Page.ClickAsync("#login-button");

このコードで

  1. ユーザー名入力
  2. パスワード入力
  3. ログインボタン押下

という一連の操作を実行できます。

StepDefinitionでの使用例(Reqnroll)

ReqnrollとPlaywrightを組み合わせると、StepDefinition内でこのように書くことができます。

[When(@"ユーザー名とパスワードを入力する")]
public async Task WhenLogin()
{
await PlaywrightHooks.Page.FillAsync("#username", "testuser");
await PlaywrightHooks.Page.FillAsync("#password", "password123");
}

ボタンをクリックするStep

[When(@"ログインボタンを押す")]
public async Task WhenClickLogin()
{
await PlaywrightHooks.Page.ClickAsync("#login-button");
}

このようにすると、FeatureファイルのシナリオとUI操作が対応したテストを書けます。

よく使うセレクタ

Playwrightでは様々なセレクタを使えます。

セレクタ
ID#login
クラス.button
要素button
テキストtext=ログイン
属性[name='username']

await PlaywrightHooks.Page.FillAsync("[name='username']", "testuser");

Locatorを使う書き方

Playwrightでは Locator を使う書き方もよく使われます。

クリック

await PlaywrightHooks.Page.Locator("#login-button").ClickAsync();

入力

await PlaywrightHooks.Page.Locator("#username").FillAsync("testuser");

Locatorを使うと、要素操作をまとめて管理しやすくなるメリットがあります。

まとめ

Playwrightで要素をクリック・入力する基本操作は次の通りです。

クリック

await Page.ClickAsync("selector");

入力

await Page.FillAsync("selector", "text");

よく使うセレクタ

  • #id
  • .class
  • text=文字
  • [attribute=value]

Reqnrollと組み合わせることで、BDDスタイルのE2Eテストを簡潔に記述できます。

Playwrightを使ったテストを書く場合は、まず今回紹介したクリックと入力の操作を理解しておくと、多くのUIテストを作成できるようになります。

.NET
スポンサーリンク
シェアする
trelab