[Tool][Selenium IDE]修正 Pause Command 無法 Export 的問題
前言
跟上次 [Tool][Selenium IDE]Export to C#/WebDriver/MSTest 的原因有點像,這次碰到的是 pause 這個 command 無法被正確匯出。issue 的來源請見:Issue 6725。
這次比較棘手一點,因為沒有 exception, 就少了一些資訊來找問題的原因。
尋找問題原因
依據 issue 6725 上提供的資訊,手上有的線索是有一些格式是 PASS, 有一些是 FAIL 。因此,首先我就打開了兩個 format template 的 source code ,來比較 pause 的部分是否有所差異。結果兩者的 pause function 並無差異,如下圖所示:
試著修改了幾個地方跟嘗試加了幾個 function 都沒有作用,但在這個過程中,發現有蠻多東西不見了。也就是 format template 中其實比較像是擴充跟轉換 format 所需要用到的 function 而已。那會不會問題根源是出在 RC 跟 WebDriver 在 Selenium IDE 的 source code 行為壓根就不一樣。
既然如此,那只好再找找看有什麼不同的,找到兩者引用的 js 不同的部分 (廢話,當然不同啊…),如下圖所示:
看來這就是原始的 source code 了,因此找到了 Selenium IDE 的 source code 位置,一樣,比較一下 WebDriver.js 跟 remoteControl.js 在 pause 上到底有哪邊不一樣,在 WebDriver.js 中找到了一個重大嫌疑犯,如下:
source code 看起來,應該是這一段改掉就可以了。但,真的是它嗎?光比較 code 跟 trace code, 我還是很難確定,這個改掉就會 work 。
所以問題就變成我要怎麼在本機改掉這段 source code 。
How to Modify Firefox Add-On Source Code
在上一次碰到的問題中, TonyQ 有指導過我,Firefox 的 add-on source code 是放在 C:\Users\<user>\AppData\Roaming\Mozilla\Firefox\Profiles\<user with hash >\extensions,照著他的指示我找到了一堆 xpi ,其中幾個看起來應該就是 Selenium 不同 formatter 的 source code 。如下圖所示:
xpi 就是 zip 的方式壓縮,因此,我解開了 {a6fd85ed-e919-4a43-a5af-8da18bda539f}.xpi 後,找到了在 code.google 上一樣的 source code。照著路徑,就可以找到 WebDriver.js ,如下圖所示:
接著打開 webdriver.js 後,把 pause 由 1 改成 0 ,如下所示:
接著,把原本的 folder 再 zip 並修改附檔名成 xpi: {a6fd85ed-e919-4a43-a5af-8da18bda539f}.xpi ,蓋回去原本的 xpi ,大功告成。
我碰到的 case 是 Selenium IDE 被 disabled, 所以自己透過 add-on manager 設成 enabled 即可。
測試新版本是否正常運作
我用 Selenium IDE 錄了一個簡單的 scenario 如下所示:
測試直接 copy to clipboard 可以正常運作,出來的結果是 Thread.Sleep(500) 。
直接匯出成 C#/WebDriver 也沒問題:
Looks great!茶包成功射掉!
結論
- Trace code 跟找問題原因的過程很快樂
- 可以解決別人跟自己的問題很快樂
- 有幸認識一些貴人,在關鍵時提供臨門一腳很快樂
- 知道怎麼自己改 FireFox add-on 的 source code 了
我的 xpi :fixed webdriver problem.zip
blog 與課程更新內容,請前往新站位置:http://tdd.best/