2013-01-10 141 views
2

我们在每个活动中都嵌入了WebView。 在某个页面上,我们显示一个进度条,然后显示Webview,再次显示进度条,并最终加载内容。Calabash Android无法找到未找到Webviews

最后,我们使用查询方法触发Javascript查询。我们终于夹具看起来是这样的 -

performAction('wait_for_no_progress_bars') 
performAction("wait_for_view_by_id", 'webView') 
performAction('wait_for_no_progress_bars') 
performAction("wait_for_view_by_id", 'webView') 
result =query("webView, css:"+locator) 

它无法在查询步说“不网页视图找到”。这之前的步骤通过(它获取WebView),但查询步骤失败。 有什么想法可能会出错?

在研究进入robotium来源,我们发现,查询方法在内部使用“getCurrentViews()”不仅着眼于知名度,也做了一些处理,以与高度。我们在这里的视角相当长。这可能会导致任何问题?

控制台输出如下 -

2013-01-10 14:33:42 - Action: wait_for_no_progress_bars - Params: 
2013-01-10 14:33:42 - Result:'{"bonusInformation":[],"message":"","success":true}' 
2013-01-10 14:33:42 - Action: wait_for_view_by_id - Params: webView 
2013-01-10 14:33:42 - Result:'{"bonusInformation":[],"message":"","success":true}' 
2013-01-10 14:33:42 - Action: wait_for_no_progress_bars - Params: 
2013-01-10 14:33:42 - Result:'{"bonusInformation":[],"message":"","success":true}' 
2013-01-10 14:33:42 - Action: wait_for_view_by_id - Params: webView 
2013-01-10 14:33:42 - Result:'{"bonusInformation":[],"message":"","success":true}' 
2013-01-10 14:33:47 - Action: query - Params: css, #payment_info 
2013-01-10 14:33:48 - Result:'{"bonusInformation":["Exception stack trace:\njava.lang.RuntimeException: No webviews found\n\tat sh.calaba.instrumentationbackend.actions.webview.QueryHelper.executeJavascriptInWebview(QueryHelper.java:35)\n\tat sh.calaba.instrumentationbackend.actions.webview.Query.execute(Query.java:13)\n\tat sh.calaba.instrumentationbackend.Command.execute(Command.java:49)\n\tat sh.calaba.instrumentationbackend.actions.HttpServer.runCommand(HttpServer.java:158)\n\tat sh.calaba.instrumentationbackend.actions.HttpServer.serve(HttpServer.java:114)\n\tat sh.calaba.instrumentationbackend.actions.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:412)\n\tat java.lang.Thread.run(Thread.java:856)\n"],"message":"No webviews found","success":false}' 

和亚洲开发银行日志如下 -

Activity to be started :class com.abcd.mobile.android.booking.PaymentInfoActivity 
I/ActivityManager( 79): START {cmp=com.abcd.mobile.android/.booking.PaymentInfoActivity} from pid 2041 
W/WindowManager( 79): Failure taking screenshot for (180x300) to layer 21045 
W/InputManagerService( 79): Focus gain on non-focused client [email protected] (uid=10045 pid=2041) 
D/RhinoConnector(2041): Instantiating connection for activity com.abcd.mobile.android.booking.PaymentInfoActivity 
D/dalvikvm(2041): GC_CONCURRENT freed 1892K, 13% free 27424K/31175K, paused 7ms+24ms 
I/Process ( 79): Sending signal. PID: 2041 SIG: 3 
I/dalvikvm(2041): threadid=3: reacting to signal 3abcd 
D/RhinoConnector(2041): Rhino bounded. Executing post connection hook for com.abcd.mobile.android.booking.PaymentInfoActivity 
I/dalvikvm(2041): Wrote stack traces to '/data/anr/traces.txt' 
V/PhoneStatusBar( 152): setLightsOn(true) 
I/Process ( 79): Sending signal. PID: 2041 SIG: 3 
I/dalvikvm(2041): threadid=3: reacting to signal 3 
I/System.out(2041): URI:/
I/System.out(2041): header: {content-type=application/json;charset=utf-8, connection=close, user-agent=Ruby, host=127.0.0.1:34777, content-length=55, accept=*/*} 
I/System.out(2041): params: {json={"command":"query","arguments":["css","#payment_info"]} 
I/System.out(2041): } 
I/System.out(2041): files: {} 
I/System.out(2041): command: {"command":"query","arguments":["css","#payment_info"]} 
I/InstrumentationBackend(2041): Got command:'Command:'Line:null,query', arguments:'[css, #payment_info]' 
I/dalvikvm(2041): Wrote stack traces to '/data/anr/traces.txt' 
W/System.err(2041): java.lang.RuntimeException: No webviews found 
W/System.err(2041): at sh.calaba.instrumentationbackend.actions.webview.QueryHelper.executeJavascriptInWebview(QueryHelper.java:35) 
W/System.err(2041): at sh.calaba.instrumentationbackend.actions.webview.Query.execute(Query.java:13) 
W/System.err(2041): at sh.calaba.instrumentationbackend.Command.execute(Command.java:49) 
W/System.err(2041): at sh.calaba.instrumentationbackend.actions.HttpServer.runCommand(HttpServer.java:158) 
W/System.err(2041): at sh.calaba.instrumentationbackend.actions.HttpServer.serve(HttpServer.java:114) 
W/System.err(2041): at sh.calaba.instrumentationbackend.actions.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:412) 
W/System.err(2041): at java.lang.Thread.run(Thread.java:856) 

回答

0

尝试

wait_for(:timeout => 10) {query("WebView").size > 0} 

,而不是

performAction("wait_for_view_by_id", 'webView')