■ はじめに
https://dk521123.hatenablog.com/entry/2021/02/06/220603
https://dk521123.hatenablog.com/entry/2021/03/04/172003
の続き。 NightWatch に関して、基本的なことを行うのに必要なAPIを書き足していく
目次
【0】API仕様 【1】ユーザ操作 1)click() 2)setValue() 【2】確認・検証 1)title() 2)visible() 3)containsText() 4)text() / value() 5)getText() / getValue() 6)urlEquals() / urlContains() 【3】クッキー 1)set/get/deleteCookie 【4】その他のメソッド 1)waitForElementVisible() 2)pause() 3)windowMaximize() 4)saveScreenshot()
【0】
1)API仕様
2)要素の指定の仕方
* メソッドの第一引数は、対象の要素を指定するのに、セレクタを用いる => セレクタについての詳細は、以下の関連記事を参照のこと
セレクタ
https://dk521123.hatenablog.com/entry/2021/02/27/000000
【1】ユーザ操作
1)click()
* クリック操作
例:select タグを選択する
browser.click('select[name="your-select-name"] option[value="some-value"]')
https://stackoverflow.com/questions/36020702/nightwatch-to-select-option-from-select-box/38397040
2)setValue()
* 値の入力
例:「input[type=text]」に「nightwatch」を入力しEnterキー押下
browser.setValue('input[type=text]', ['nightwatch', browser.Keys.ENTER]);
【2】確認・検証
* ここに記載されていないメソッドは、以下の公式サイトのAPIを参照のこと
https://nightwatchjs.org/api/
https://nightwatchjs.org/api/expect/
1)title
* タイトルの確認 => 各ページにタイトルが一意に振られている場合は ページ先遷移の確認として使える
例:タイトルの確認
browser.assert.title('your-expected-title');
2)visible
* 表示・非表示の確認
例:表示・非表示
// 表示の確認 browser.assert.visible('input[type=text]'); // 非表示の確認 (notを付加する) browser.assert.not.visible('div');
3)containsText()
* ざっくり指定された文字列が含まれているを確認する際に使用
例:divの表示を確認する
// <div id='world'>Hello world!!</div> を確認したい browser.containsText('#world', 'Hello world!!'); // <div class='hello'>Hello world!!</div> を確認したい browser.containsText('.hello', 'Hello world!!');
4)text() / value()
* 表示の確認する際に使える
https://nightwatchjs.org/api/expect/#expect-text
例:div/id付の表示を確認する
// <div id="value1">こんにちは<div>を確認するテスト browser.expect.element('#value1').text.to.equal('こんにちは'); // [出力結果] // √ Expected element <#value1> text to equal: "こんにちは"
5)getText() / getValue()
* データを取得する
例:div/class付の表示を取得する
// <div id="value1">こんにちは<div>を確認するテスト browser.getText('#value1', (result) => { // 「こんにちは」が表示される // console.log(result.value); browser.assert.strictEqual(result.value, 'こんにちは'); });
6)urlEquals() / urlContains()
* URL の確認 => 遷移先のURL、リダイレクトしている/していない などの確認に使える
例:URLの確認
// URLが http://localhost:8080/ かどうか browser.assert.urlEquals('http://localhost:8080/'); // localhostが含んでいる場合 browser.assert.urlContains('localhost');
【3】クッキーの操作
* ログイン情報がないクリーンの状態での動作確認で、 クッキーを削除するなどのクッキー操作もサポートされている * 以下の公式サイトを参照のこと
https://nightwatchjs.org/api/commands/#cookies-headline
1)set/get/deleteCookie
サンプル
// This is a template for E2E tests. module.exports = { beforeEach(browser) { browser .init() .url('http://localhost:8080/'); }, 'Test Case No.1': (browser) => { browser .waitForElementVisible('body') .assert.title('vue-ts-demo'); }, after(browser) { browser // クッキーの設定 .setCookie({ name: 'my_cookie', value: 'success' }) // クッキーの取得 .getCookie('my_cookie', (result) => { // eslint-disable-next-line no-console console.log(result); }) // クッキーの削除 .deleteCookie('my_cookie', (result) => { // eslint-disable-next-line no-console console.log(result); }) .end() .perform((done) => { // eslint-disable-next-line no-console console.log('Done'); done(); }); }, }; /** 出力結果 { domain: 'localhost', expiry: 2245760105, httpOnly: false, name: 'my_cookie', path: '/', secure: false, value: 'success' } { sessionId: '203fb0b472335b9d2873b75ad45a8328', status: 0, value: null } Done **/
【4】その他のメソッド
1)waitForElementVisible()
* 指定されたタグが表示されるまで待つ
例:bodyタグが現れるまで1秒待つ
browser.waitForElementVisible('body', 1000);
2)pause()
* 指定ミリ秒まで待つ
例:2秒待つ
browser.pause(2000);
3)windowMaximize()
* Windowを最大表示
4)saveScreenshot()
* スナップショットを取る => 詳細は、以下の関連記事を参照のこと
NightWatch ~ スナップショットあれこれ ~
https://dk521123.hatenablog.com/entry/2021/03/07/223957
参考文献
https://qiita.com/mima_ita/items/40293bd80a497a209a89
https://ito-u-oti.com/post-699/
関連記事
Vue + NightWatch で E2Eテスト をする
https://dk521123.hatenablog.com/entry/2021/02/06/220603
NightWatch ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/03/04/172003
NightWatch ~ あれこれ ~
https://dk521123.hatenablog.com/entry/2021/03/08/235438
NightWatch ~ カスタムアサーション ~
https://dk521123.hatenablog.com/entry/2021/03/06/234935
NightWatch ~ スナップショットあれこれ ~
https://dk521123.hatenablog.com/entry/2021/03/07/223957
NightWatch に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/02/07/180052
セレクタ
https://dk521123.hatenablog.com/entry/2021/02/27/000000