2012-12-06 146 views
2

我有一個已經與Selenium Flex重新編譯的Flash應用程序。
使用FlashFirebug我能夠找到該應用程序的定位器,並且我已經使用Selenium RC使用selenium flex API編寫腳本,當我運行腳本時,這些定位器已被識別但操作無法執行。
在硒IDE中也可以識別這些定位器,但無法執行類似點擊之類的操作。在這裏,我已將user-extension.js附加到我的IDE中。無法使用selenium flex api執行點擊按鈕?

回答

3

這是我怎麼會找到你的問題的根本原因:

  • 確保您的* .swf文件(Flex應用程序)的反對Selenium-Flex API *庫名爲.swc編譯正確
    • 運行您在帶有Javascript調試控制檯的Web瀏覽器中swf(例如,帶有Firebug的Firefox)。
    • 使用JavaScript控制檯,使用它的DOM ID獲取SWF的引用 - document.getElementById(swfId)
    • 現在,測試Flex的硒,通過運行測試的一個符合到您的SWF OK命令,它所公開的硒。這些命令是在上一步獲得的對象上執行的Javascript函數 - 有關詳細信息,請參閱accessing a Flex app from Javascript。所有Flex-Selenium公開的命令都可以在Commmands.as的Flex-Selenium源代碼中找到。例如,ExternalInterface.addCallback("doFlexMouseDown", mouseCommands.doFlexMouseDown);表示名爲的Javascript函數doFlexMouseDown(在MouseCommands.as中定義)已在您的swf中公開。執行Javascript表達式typeof document.getElementById('swfId').doFlexMouseDown應評估爲函數(不是undefined)。你也應該可以在不出錯的情況下調用這個函數 - document.getElementById(swfId).doFlexClick('idOfFlexObject')其中idOfFlexObject是swf中某個對象(例如一個按鈕)的ID。
  • 因此,現在您應該能夠找到您通過硒針對您的swf調用時遇到問題的命令,並在您的Javascript調試控制檯中針對swf對錯誤進行測試。
    • 如果您的swf確實是針對您的swf正確編譯的,那麼當您針對您的swf調用相應的Javascript函數時,您很可能會收到錯誤(Javascript函數本身已定義並正確顯示給Javascript,當它被調用時發生在你的swf中)。然後,通過下載Flex-Selenium的源代碼(請參閱以前的超鏈接)並將Flex源代碼放入其搜索路徑中,將Flex調試器附加到您的swf中,然後找到此錯誤的原因。您將在執行失敗的命令時放置一個斷點。根據我自己的經驗,我必須定製並修復Flex-Selenium源代碼中的小錯誤。
    • 如果您在Javascript調試控制檯上沒有發現錯誤,那麼您應該在Selenium RC未能針對您的swf運行命令的情況下發布堆棧跟蹤,因爲那樣可能會導致您使用或配置了Selenium RC或Selenium IDE)是問題所在。
0

這很簡單,通過SFAPI(Slenium的Flex API) 點擊Flex應用程序,你必須編譯SeleniumFlexAPI Flex代碼。SWC文件,您將在SFAPI文件夾中獲得,對於 你需要遵循這些步驟SFAPI,這些文件See here

或者see example here