發射程式碼
Selenium IDE 有兩個主要元件,瀏覽器內的播放,由 動作 和 事件 提供支援。
以及使用 命令列執行器 進行命令列模式播放。
Selenium SIDE 執行器環境
執行器基於 Node,您可以利用環境發射更好的程式碼。
- Node.js 8 或以上版本,含 npm
- Jest
- jest-environment-selenium
- selenium-webdriver
發射程式碼
在發射程式碼時必須注意某些要點,因為您的外掛程式並非唯一發射程式碼的外掛程式,而且也不是控制發射流程的外掛程式。
為了確保外掛程式不會互相干擾執行,必須採取某些預防措施。
切勿使用 Return
關鍵字 return 表示您之後的程式碼將永遠無法存取,您可能會阻礙其他外掛程式。
return somePromise();
plugin2Func(); // unreachable
取而代之的是,由於我們使用的是 Node 8 或更高版本,因此我們可以利用 非同步函式。
await somePromise();
plugin2Func(); //works
請勿在全域範圍定義變數
在全域範圍內定義變數,表示如果您和另一個外掛程式,或 Selenium IDE 本身,定義了同一個變數,就會發生錯誤或未知的副作用,這將使除錯變得困難。
例如,採用這個測試案例
store|button|elementplugin click|buttonassert element present|css=${element}
如果您定義一個變數,程式碼將如下所示
let element = "button";
let element = await driver.findElement();
await element.click();
expect(element).toBePresent(); // different button!
若要避免在全域範圍內定義變數,請使用 Promise 的 then 函式
let element = "button";
await driver.findElement().then(element => {
return element.click();
});
expect(element).toBePresent(); // the store defined button
總結
一般來說,請嘗試避免混淆全域範圍,如果您需要定義,您隨時可以使用 Promise 的 then 或最糟的情況下使用 iife。
