Android - 检查元素是不是存在于 WebView 中(在 DOM 中)

Posted

技术标签:

【中文标题】Android - 检查元素是不是存在于 WebView 中(在 DOM 中)【英文标题】:Android - Check if element exists inside WebView (in the DOM)Android - 检查元素是否存在于 WebView 中(在 DOM 中) 【发布时间】:2015-10-02 14:58:30 【问题描述】:

是否有一种简单干净的方法来检查特定元素(给定其 id)是否存在于已加载到 WebView 中的网页上。

我知道在 javascript 中我们可以使用document.body.contains(element); 来检查元素是否存在。

如何在我的 android 应用流程中使用它来查找元素是否存在(在根据元素的存在执行一些其他语句之前)?

【问题讨论】:

AFAIK,没有简单的方法可以做到这一点。您可以通过获取 webview 的 html 内容并执行 String.contains 来替代。 【参考方案1】:

你可以放在PageFinish或者webview的其他方法上:

webview.evalueateJavascript("document.getElementById('your id')", object : ValueCallback<String>() 
    override fun onReceiveValue(value: String) 
      Toast.makeText(mContext, "element exist", Toast.LENGTH_SHORT).show()

    
);

【讨论】:

【参考方案2】:

如您所见there,很容易找出是否 webview 包含某个字符串。

因此,如果您的 webview 仅包含唯一字符串,则有可能 用以下方法检查它:

String string = "text you want to find";
webview.findAll(string); //works for API levels 3 - 16
webview.findAllAsync(string); //works for API levels 16 and up

但这是非常恶意的,因为通常不可能使所有 UI 中的字符串是唯一的。

【讨论】:

不完全是我想要的。但是我今天学到了一个新东西,所以谢谢。

以上是关于Android - 检查元素是不是存在于 WebView 中(在 DOM 中)的主要内容,如果未能解决你的问题,请参考以下文章

如何检查元素是不是存在于一组项目中?

检查一个列表元素中的元素是不是存在于另一个列表中

如何检查一个元素是不是存在于 Django 查询集中?

检查文件是不是已经存在于webview缓存android中

Android 使用其 URL 检查文件是不是存在于远程服务器中

如何检查文件是不是存在于android设备的特定文件夹中