我正在嘗試爲iPhone應用程序設置自動單元測試。我使用的是UIWebView,需要模擬不同鏈接上的點擊。我試過doing this with JavaScript,但它不會產生與我手動點擊鏈接時相同的結果。主要問題是鏈接的屬性設置爲target
。如何在iPhone的Cocoa中模擬鼠標點擊UIWebView?
當您手動點擊標準的「彈出」鏈接(例如<a href="http://example.com" target="_blank">
)時,UIWebView將忽略點擊事件並且不會導航到任何內容。如果您嘗試通過JavaScript dispatchEvent()
方法自動單擊此鏈接,UIWebView將完全忽略target
屬性,並會在當前頁面中正常打開鏈接。
我需要一個自動單元測試來生成確切與手動單擊鏈接時的結果相同。
我相信這個自動化單元測試正確工作的唯一方法是在特定的x/y座標(即鏈接所在的位置)模擬鼠標點擊。由於單元測試只能在內部使用,私有API調用沒有問題。
這似乎應該是可能的,因爲iPhone應用程序isimulate似乎做了類似的事情。
有什麼辦法可以在框架中做到這一點?
我發現了一個類似的問題,標題爲Simulate mouse click to window instead of screen,但我猜這種方法只適用於OS X,而不適用於iPhone OS。
尼斯演練我試圖使用類似於示例代碼這裏提供:http://cocoawithlove.com/2008/10/synthesizing-touch-event-on-iphone.html但它不工作。在一個普通的UIView子類上,它顯然會調用touchesBegan/touchesEnded方法,因爲代碼示例直接調用它。問題是,當你將它發送到UIWebView時,它不會傳遞該事件,就好像用戶在該位置點擊任何HTML元素時所點擊的那樣。 – Senseful 2010-04-28 17:51:12