当前位置: 首页 > 知识库问答 >
问题:

在WebView中自动单击按钮?

徐知
2023-03-14

我用Webview创建了一个应用程序,需要自动按下按钮

String js = "javascript:(function(){"+
    "l=document.getElementByClassName('pri_btn');"+
    "e=document.createEvent('HTMLEvents');"+
    "e.initEvent('click',true,true);"+
    "l.dispatchEvent(e);"+
    "})()";
    webView.evaluateJavascript(js, new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String s) {
            String result = s;

        }
    });

返回null。

任何帮助都将不胜感激!

共有1个答案

仇炜
2023-03-14

您可能希望使用一个名为getElementsByClassName的方法(注意复数形式),该方法返回元素数组。所以您的代码应该如下所示:

String js = "javascript:(function(){"+
    "l=document.getElementsByClassName('pri_btn')[0];"+
    "l.click();"+
    "})()";
webView.evaluateJavascript(js, new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        String result = s;
    }
});

另外,当我尝试运行这个函数时,重定向过程中发生了一个SSL错误。要解决这个问题,您应该在WebViewClient中重写onReceivedSSLerror()方法,如下所示:

webView.setWebViewClient(new WebViewClient(){
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        if (handler != null){
            handler.proceed();
        } else {
            super.onReceivedSslError(view, null, error);
        }
    }
});

webView.getSettings().setDomStorageEnabled(true);

编辑:检查元素值中是否出现“登录”:

javascript:(function(){
tab = document.getElementsByClassName('pri_btn');
for(var i=0; i< tab.length; i++){
    if(tab[i].value.toLowerCase().indexOf("login") !== -1) return tab[i].click();
}
})()
 类似资料:
  • 我正试图让JQuery在按下下一个按钮时自动单击该按钮。在互联网上,我发现应该是这样的(查看JQuery部分)。但由于某种原因,它不起作用。 它们必须在同一个代码中吗? 我尝试过的:JQuery: 表单中的按钮1 HTML: 表单中的按钮2 HTML:

  • 问题内容: 我需要自动单击网页中的任何“添加”按钮,如下所示: “ https://groceries.asda.com/search/yoghurt ” 但是,页面中的“添加”按钮都没有名称或ID。所以我不能使用Selenium包中的命令。 谁能帮我? 问题答案: 要单击特定产品的任何特定按钮,可以编写如下方法: 现在,您可以单击传递其标题的任何按钮,如下所示:

  • 我正在为Android在Eclipse中编写一个应用程序。该应用程序不断与Web服务器中的内容进行通信。在服务器中,我有一个带有另一个按钮的html文件。我希望当我按下Android应用程序中的按钮时,html文件中的按钮被自动单击...是否可能。请建议... 我看到下面的代码(jquery): 谢啦

  • 我想知道如何选择listview first item select并通过单击按钮自动单击。 使用下面的代码,我可以选择第一行,但无法选择。 这是我的listview点击事件: 非常感谢您的帮助!如果有人想了解更多信息,请务必告诉我,以便我更新我的问题。

  • 问题内容: 我有一个HTML表单,其中使用了几个按钮。问题是,无论我单击哪个按钮,即使该按钮的类型不是“ submit”,也将提交表单。例如:之类的按钮,导致表单提交。 为这些按钮中的每个按钮执行一次操作是非常痛苦的。 我使用jQuery和jQuery UI,并且网站使用HTML5。 有没有办法禁用这种自动行为? 问题答案: 像按钮 是 提交按钮。 设置以改变它。是默认值(由HTML建议指定)。

  • 问题内容: 我有一个小型的Android应用程序,该应用程序会在5秒钟后自动单击按钮。我已经用过,但这行不通。当计时器归零时,它只会崩溃。 这是我的代码: 问题答案: 您应该发布包含错误消息的logcat,但是一个问题可能是您正在从UI线程访问UI元素,这不是一个好主意。 要执行您想要的操作,您实际上不需要其他线程。您可以使用和来代替,如下所示。 这将安排在5秒钟后在UI线程上执行。如果仍然崩溃,