[Tool][Selenium IDE]修正 Pause Command 無法 Export 的問題

  • 6710
  • 0
  • 2013-12-31

[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 如下所示:

image

測試直接 copy to clipboard 可以正常運作,出來的結果是 Thread.Sleep(500) 。

image

直接匯出成 C#/WebDriver 也沒問題:

Looks great!茶包成功射掉!

 

結論

  1. Trace code 跟找問題原因的過程很快樂
  2. 可以解決別人跟自己的問題很快樂
  3. 有幸認識一些貴人,在關鍵時提供臨門一腳很快樂
  4. 知道怎麼自己改 FireFox add-on 的 source code 了

 

我的 xpi :fixed webdriver problem.zip


blog 與課程更新內容,請前往新站位置:http://tdd.best/