常見問題集
如何記錄滑鼠暫留?
滑鼠移入(又稱暫留)動作難以在記錄週期中自動擷取。
若要將暫留動作新增至測試,需要一些手動介入。有兩種不同的方法可以執行此動作。
選項 1:在記錄時新增
- 記錄時,右按一下要暫留的元素
- 從顯示的選單按一下
Selenium IDE
,然後按一下滑鼠暫留
- 確認
滑鼠暫留
測試步驟在測試中的位置正確(並視需要將其拖放至其他位置)
選項 2:在測試編輯器中手動新增
- 在 IDE 中右按一下測試步驟
- 選擇
插入新指令
- 在
指令
輸入欄位中輸入滑鼠移至
- 在
目標
輸入欄位中輸入您想要滑鼠移至的定位元 (或按一下在頁面中選擇目標
並選取您想要滑鼠移至的元素)
為什麼輸入日期輸入欄位的數字不會正確顯示?
這個問題會在透過 Selenium IDE 的命令列執行器執行測試時發生。
若要解決這個問題,您需要啟用 w3c 模式,您可以透過在啟動執行器時傳遞 -c "chromeOptions.w3c=true"
來啟用。
值得注意的是,啟用 w3c 模式可能會影響 Selenium Actions 的效能 (如果您的測試最終使用它們),因此只有在您遇到日期輸入欄位問題時才使用此模式。
如何讓 IDE 在繼續執行之前等待特定條件為真?
在某些情況下,IDE 中內建的等待策略並不足夠。發生這種情況時,您可以使用其中一個可用的明確等待命令。
等待元素可編輯
等待元素出現
等待元素可見
等待元素不可編輯
等待元素消失
等待元素不可見
如何在文字驗證中使用正規表示式?
這項功能我們最終會加入(有關詳細資訊,請參閱 問題 141)。作為解決方法,您可以使用 XPath 定位器搭配 starts-with
和 contains
關鍵字。
指令 | 目標 | 值 |
---|---|---|
assertElementPresent | //a@[starts-with(.,'you are the') and contains(.,'User to log in today')] |
如何捲動?
Selenium IDE 中沒有明確的捲動指令,因為 Selenium 中沒有實作此指令。您可以改用 JavaScript 中的 scrollTo
指令,藉由指定您想捲動到的 x
和 y
座標來達成此目的。
指令 | 目標 | 值 |
---|---|---|
executeScript | window.scrollTo(0,1000) |
儲存檔案
為什麼我儲存 SIDE 專案的位置不會被記住?
為什麼每次要儲存專案時,都需要執行「另存新檔」流程?
為什麼我需要覆寫先前儲存的檔案?
所有這些問題都是同一個問題的一部分 -- 作為瀏覽器擴充功能,Selenium IDE 無法存取檔案系統。提供「儲存」功能的唯一方法是透過下載檔案。當 IDE 轉移到原生應用程式時,此問題將會獲得解決。這將會提供 IDE 優先檔案系統存取權,進而讓它能夠提供完善的「儲存」體驗。
如果您想保持最新狀態,您可以追蹤 問題 363。
如何在嚴格的 Proxy/防火牆後方安裝 IDE?
在某些情況下,您可能無法完全公開存取網際網路(例如在「公司 Proxy 或防火牆」後方)。在這些環境中,您需要取得已建置 Selenium IDE ZIP 檔案的副本,才能記錄自動化測試指令碼。這可在 GitHub 的「版本」區段中取得,網址如下
https://github.com/SeleniumHQ/selenium-ide/releases
並非所有版本都包含「selenium-ide.zip」,因為有些版本只是「原始碼」版本。尋找具有此 zip 檔案的最新建置。這表示它是提交至 Chrome 和 Firefox 商店的最新版本。
官方簽署版本
從專案發佈頁面下載 zip 檔案會提供未簽名的 ZIP 檔案。您也可以從
注意:如果您已安裝外掛程式(例如,您嘗試取得安裝程式副本的筆電),那麼在嘗試存取外掛程式時,您只會看到移除按鈕。因此,請先移除外掛程式,取得安裝程式以移至另一台未連線的電腦,然後視需要重新安裝在主要裝置的瀏覽器中。
注意:您無法直接從 Chrome 商店取得「.crx」檔案。相反地,您需要先在本地安裝一次,然後前往電腦上的安裝目錄以擷取檔案。
附加外掛程式後,為何不會出現儲存對話方塊?
由於目前的 Chrome 錯誤,如果您未回覆 Selenium IDE 發出的訊息,後續處理將不會發生。為了解決此問題,請務必使用實體 project
聆聽動作 emit
,並回覆 undefined
chrome.runtime.onMessageExternal.addListener((message, sender, sendResponse) => {
if (message.action === "emit" && message.entity === "project") {
sendResponse(undefined);
}
});