我可以在Android Web视图中找到一个iframe,但是我需要与其进行交互。各种页面建议

query("webView css:'iframe'", :stringByEvaluatingJavaScriptFromString => '...')


但这导致“找不到这样的方法:stringByEvaluatingJavaScriptFromString([String])”,它看起来像一个iOS函数,所以我很确定这是仅iOS解决方案:我需要Android。

我知道我可以通过在URL中打开它们来传递javascript查询,但是我只经历过将Android代码中带有特殊代码的Chrome对象链接到应用程序而从Android webview中获取内容的经历。

有什么想法可以获取数据吗?

最佳答案

iOS响应是正确的,您应该使用JavaScript来获取iframe的内容。但是,您应该使用evaluate_javascript(query_string, javascript)在Android中评估javascript。例如

evaluate_javascript("webview", "return document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('...').getBoundingClientRect();")

使用坐标点击视图。

如果未正确解析rect,则可以执行以下操作:
var boundingBox = document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('main').getBoundingClientRect(); var rect = {}; rect.width = boundingBox.width; rect.height = boundingBox.height; rect.left = boundingBox.left; rect.top = boundingBox.top; return rect;

其次,query('webView css:#grabby')不是有效的查询。 query('webView css:"#grabby"')query("webView css:'#grabby'")是。如果测试服务器崩溃而不是报告它,则您很有可能正在运行(非常)旧版本的Calabash-Android。

09-25 17:23
查看更多