Selenium 2.0 後端,用於透過 Se2 Firefox 執行 IDE 測試套件

GSoC 2010,這是一場偉大的冒險。我是 Raynatou,我來自布吉納法索,並在 SERLI 實習。

GSoC 2010,這是一場偉大的冒險。

我是 Raynatou,我來自布吉納法索,並在 SERLI 實習。與這家公司的所有實習生一樣,我的實習主題側重於進階主題,例如將 WebDriver 整合為 Selenium IDE 的後端。Selenium IDE 目前建立在 Selenium Core 之上,用於與網頁互動。Selenium Core 有幾個主要限制,包括無法觸發原生事件。為了避免這些限制並產生更穩健的測試,我正在研究使用 WebDriver 取代 Selenium Core 的 Selenium IDE。

我的導師是來自 SauceLabs 的 Eric Allen,他是我的主要導師,以及來自 SERLI 的 Jérémy Hérault,他是他的第二位但同樣重要的導師 ;)。

Eric 在今年稍早已經完成了大部分的整合工作。他的工作目標主要是展示 Selenium IDE 和 Selenium 2.0 Firefox 驅動程式的可能性。它基於 Firefox WebDriver 擴充功能和 Selenium IDE 之間的非同步通訊,Se-IDE 等待 WebDriver 告訴它目前的命令已成功傳遞(或未傳遞),以便呼叫目前測試案例的下一個命令(使用回呼函式)。我的任務目標是完成此整合。然而,Eric 是一個瘋狂的人,他很快就完成了,我們一起思考了另一種合併方式。

我們的新想法是基於兩者之間的同步通訊。為了做到這一點,我取得了 FirefoxDriver 實例,並像使用一般物件一樣操作它,透過呼叫其方法。但 FirefoxDriver 的行為並不像我想像的那麼簡單。JavaScript 是一種強大的語言(是的,它會讓您不寒而慄),我只需要替換一些物件(例如 Response 物件),並使用 Proxy(以及一些類似 IoC 的程式碼)來簡化我的生活和要執行的程式碼。您可以在 GitHub 上看到我的工作並追蹤它。

目前,我認為超過 95% 的 Selenium API 命令可以在 Selenium IDE 中使用 WebDriver 作為後端。該過程基本上是瀏覽 seleniumemulation 套件,並將所有 Java 類別移植到 WebDriver 類別上的 JavaScript 方法中。

現在,我正在進行單元測試,以涵蓋我已完成的任何 2.0 工作。我設法讓所有 Selenium Core 測試都透過 IDE 執行。我有一些重構工作要做,以最佳化程式碼並新增更多註解,以便更好地理解我的工作。我幾乎完成了。

我希望您喜歡我正在做的事情,我們(我和我的導師們)希望這項工作可以包含在 Selenium 2 的浪潮中。

上次修改時間為 2021 年 8 月 7 日:重新命名目錄 (e9895f27c26)