開始使用外掛程式
外掛程式可以透過新增其他指令和定位器、在測試執行前後啟動設定,以及影響記錄程序來擴充 Selenium IDE 的預設行為。
Selenium IDE 使用 WebExtension 標準在現代瀏覽器中運作(若要深入了解,您可以查看 Mozilla 的 您的第一個擴充功能 文章)。擴充功能之間的溝通透過 外部訊息傳遞協定 處理,您可以 在此處 查看範例。
本文假設您具備 WebExtension 開發知識,且只會討論 Selenium IDE 特定的功能。
呼叫 API
Selenium IDE API 可以使用 browser.runtime.sendMessage 呼叫。
範例簽章會是 browser.runtime.sendMessage(SIDE_ID, request),其中 SIDE_ID 指的是 IDE 的官方擴充功能 ID,可以在 這裡 查看。
要求
要求是 browser.runtime.sendMessage 的第二個引數,其概念類似於 HTTP。
{
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0"
}
}
uri- IDE 功能的資源定位器(例如,記錄命令、解析定位器)動詞- 修改函式(例如,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 相依性。
相依性是 key:value 的字典,例如 name:version,其中名稱是 npm 上發布的名稱,而版本是發布到 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 是清單。
