【问题标题】:Android Headless Browsing through WebView?通过WebView进行Android Headless浏览?
【发布时间】:2016-07-27 16:34:45
【问题描述】:

我正在尝试为不属于我的网站创建一个 Android 应用程序。但是是餐厅的搜索引擎。他们没有 API 可以使用。我想不经意地浏览他们的网站并将搜索查询放在 HTML 表单中,然后单击提交按钮。然后解析结果并将其与我的应用程序代码一起使用。在这里做了很多研究之后,我终于要了。 Question 1Question 2Question 3 以及到目前为止我看过的更多内容。所以到目前为止我所知道的是,如果我想在 Google.com 上做同样的事情,我会写:

myWebView.getSettings().setJavaScriptEnabled(true);

myWebView.loadUrl("http://www.google.com/");

myWebView.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView view, String url) {
       //Load HTML
            myWebView.loadUrl("javascript:document.getElementById('q') =" + "StackOverFlow" + "; document.getElementByName('btnK').click();");
        }
    });

在上面的代码中,我尝试输入搜索词“StackOverFlow”并单击搜索按钮。但它不起作用。请在这段代码中帮助我,或者指出我正确的方向。

【问题讨论】:

  • 任何帮助将不胜感激
  • 创建一个应用程序来检索网站上公开可用的数据并不是窃取,我想。就像 Facebook 客户端、Youtube 客户端以及最重要的是 Google Work 是如何工作的(通过网站爬行)。

标签: javascript android webview webdriver headless-browser


【解决方案1】:

已经有一段时间了,但为了让其他人知道,webviews 不再使用loadUrl 来运行 Javascript。尝试使用evaluateJavascript

由于您还提到了无头浏览,我建议在您的客户端中覆盖 shouldInterceptRequest 以将所有不必要的文件(例如 css、图像和可能的 js,具体取决于站点)重定向到空白输入流

【讨论】:

    【解决方案2】:
    myWebView.loadUrl("http://www.google.com/");
    

    在重写 onPageFinished 方法之后而不是之前

    【讨论】:

    • 你的意思是,没有将 webview 添加到可视化树中(或者不管它叫什么,你知道我的意思)?它有效率吗?即使 webview 不是可视化树的一部分,它也不会在后台创建可视化元素?
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2012-12-21
    • 2017-05-02
    • 2012-06-29
    相关资源
    最近更新 更多