プラグイン入門
プラグインは、追加のコマンドとロケータの追加、テスト実行前後のセットアップのブートストラップ、記録プロセスへの影響を通じて、Selenium IDE のデフォルトの動作を拡張できます。
Selenium IDE は、最新のブラウザで動作するために WebExtensions 標準を使用しています(詳細については、Mozilla の最初の拡張機能の記事を参照してください)。拡張機能間の通信は、外部メッセージングプロトコルを介して処理されます。その例はこちらで確認できます。
この記事では、WebExtension の開発に関する知識があることを前提としており、Selenium IDE 固有の機能についてのみ説明します。
APIの呼び出し
Selenium IDE APIは、browser.runtime.sendMessage
を使用して呼び出すことができます。
署名の例は、browser.runtime.sendMessage(SIDE_ID, request)
となります。ここで、SIDE_ID
は、IDEの公式拡張機能IDを参照します。これはこちらで確認できます。
リクエスト
リクエストは、browser.runtime.sendMessage
の2番目の引数であり、HTTPの考え方と似ています。
{
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0"
}
}
uri
- IDE機能へのリソースロケータ(例:コマンドの記録、ロケータの解決)verb
- 修飾関数(例:get
はものを取得し、post
は新しいものを追加します。これはhttpの場合と同様です)
IDEは有効な応答を返信します。エラーが発生した場合、IDEウィンドウのDevToolsを開いて確認できます。
browser.runtime.sendMessage(SIDE_ID, request).then(response => {
console.log("it worked!");
});
マニフェスト
プラグインは、IDEの機能に対する変更と追加を宣言するマニフェストをIDEに提供します。
{
name: "New Plugin",
version: "1.0.0",
commands: [
{
id: "newCommand",
name: "new command",
type: "locator",
docs: {
description: "command description",
target: { name: "command target", value: "command target description" },
value: { name: "command value", value: "command value description" }
}
},
{
id: "anotherCommand",
name: "another command",
type: "locator",
docs: {
description: "another command description",
target: "locator",
value: "pattern"
}
}
],
locators: [
{
id: "locator"
}
],
dependencies: {
"selenium-webdriver": "3.6.0"
}
}
一般情報
name
- 必須。プラグインの名前。version
- 必須。プラグインのバージョン。
コマンド
IDEに追加される新しいコマンドのリスト。各コマンドはいくつかのパラメータを受け取ります。
id
- 必須。コマンドの一意の識別子(camelCase)。name
- 必須。コマンドの自然言語名。これはユーザーに表示されます。type
- オプション。locator
またはregion
のいずれかになります。find
ボタンとselect
ボタンを有効にするために使用されます。(注意:type
はまだベータ版であり、将来変更される可能性があります)。docs
- オプション。コマンドの説明、ターゲット、および値のメタデータのコレクション。または、名前を文字列として指定することにより、既存のコマンドターゲットまたは値(別名ArgTypes)を使用できます(サブコレクションではなく)。完全なリストについては、ArgTypes.js
のArgTypes
を参照してください。
ロケータ
注意: ロケータはまだ開発中であり、近日中に追加されます。
IDEに追加される新しいロケータのリスト。各ロケータはid
のみを受け取ります。
id
- 必須。ロケータの一意の識別子で、ユーザーに表示されます(例:name
、css
)。
依存関係
Node.jsの追加の依存関係。これらはコマンドラインランナーを使用して実行するときにダウンロードして使用します。
依存関係は、name:version
のようなkey:value
の辞書です。ここで、nameはnpmで公開されている名前で、versionはnpmに公開されている有効なsemverです。
プラグインの登録
プラグインをSelenium IDEに登録するには、IDEウィンドウが開いていること、および正しいSelenium IDE拡張機能IDを使用していることを確認してください。
次のメッセージを送信します。
browser.runtime.sendMessage(process.env.SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{
id: "successfulCommand",
name: "successful command"
},
{
id: "failCommand",
name: "failed command"
}
]
}
}).catch(console.error);
ここで、payload
はマニフェストです。