Node.js → Mocha → WebDriver → Selenium → Chrome でウェブサイト自動テスト
Node.js から Chrome でウェブサイトを開いて、自動テストしてみます。
テスト実行中のウインドウは、「Chrome は自動テスト ソフトウェアによって制御されています。」という表示が入る。
(1)Selenium Standalone Server をダウンロードする
http://docs.seleniumhq.org/download/
http://selenium-release.storage.googleapis.com/3.8/selenium-server-standalone-3.8.1.jar
(2)ChromeDriver (Chrome用WebDriver) をダウンロードする
https://sites.google.com/a/chromium.org/chromedriver/
https://chromedriver.storage.googleapis.com/2.33/chromedriver_mac64.zip
ZIP ファイルから chromedriver を展開する
(3)手元の java のバージョンを確かめる
java -version
macOS Sierra 標準の 1.7.0_79 だと古い。
PATH=/Applications/WebStorm.app/Contents/jdk/Contents/Home/jre/bin:$PATH
PATH=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin:$PATH
java -version
JetBrains 製品には 1.8.0_152 が入っているので、これを使える。
(4)Selenium Standalone Server を起動する
java -jar -Dwebdriver.chrome.driver=./chromedriver selenium-server-standalone-3.8.1.jar
あとで Chrome 以外のブラウザもテストしたいので Selenium を使う。
(5) webdriverio をインストールする
npm install webdriverio wdio-mocha-framework
(6)最低限の wdio.conf.js を書く
exports.config = {
specs: ["./test/specs/**/*.js"],
capabilities: [{browserName: "chrome"}]
};
(7)./test/specs/google.js テストを書く
const assert = require("assert");
describe("Test", () => {
it("Test", () => {
// Google を開く
browser.url("https://www.google.com/");
// タイトルをチェックする
assert.equal(browser.getTitle(), "Google");
// 検索フォームに入力する
$("form input[name=q]").setValue("webdriver.io");
// 検索ボタンをタップする(これではうまくいかない)
// $("form input[type=submit]").click();
// 検索ボタンをタップする
browser.execute(() => {
document.querySelector("form input[type=submit]").click();
});
// 検索結果画面が表示されるのを待つ
browser.waitForExist("h3 a", 5000);
// 検索結果1位の内容を確認
assert.equal($("h3 a").getText(), "WebdriverIO - WebDriver bindings for Node.js");
assert.equal($("h3 a").getAttribute("href"), "http://webdriver.io/");
});
});
(8)テストを実行する
./node_modules/.bin/wdio wdio.conf.js
テストが成功すれば、以下のように表示される。
․
1 passing (9.20s)
テストが失敗すれば、以下のようにエラー内容が表示される。
F
0 passing (7.80s)
1 failing
1) Test Google:
unknown error: Element <input value="Google 検索" aria-label="Google 検索" name="btnK"
type="submit" jsaction="sf.chk"> is not clickable at point (524, 411).
Other element would receive the click: <div class="sbqs_c">...</div>
running
Error: An unknown server-side error occurred while processing the command.
at Context.it (test/specs/test.js:14:34)
at Promise.F (node_modules/core-js/library/modules/_export.js:35:28)
at elementIdClick("0.22294089062951095-2") - click.js:20:22
Google ウェブサイトの検索ボタンをクリックする部分は、
$("form input[type=submit]").click();
でも通りそうだけど、
オートコンプリートの関係か、クリックできないためにエラーになってしまう。
http://webdriver.io/api/action/click.html にも書いてある通り、
execute()
でブラウザ側 JavaScript を実行して、検索ボタンをクリックすることで回避できる。
Author And Source
この問題について(Node.js → Mocha → WebDriver → Selenium → Chrome でウェブサイト自動テスト), 我々は、より多くの情報をここで見つけました https://qiita.com/kawanet/items/fb7283c180da635a8c91著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .