【问题标题】:"Click" on website button“点击”网站按钮
【发布时间】:2017-12-28 14:55:15
【问题描述】:

我想用Java 解析网站中的列表。我已经知道如何使用Jsoup 解析列表 - 所以这部分已经完成并且可以工作了。

但是,要在网页中显示列表,我需要按一个按钮,但我不知道如何使用 Java 来做到这一点。我已经在 SO 上找到了类似的问题:Programmatically click a webpage button。我想我可以为此使用HttpURLConnectionKVP,但我不知道如何让它工作。

列表选择器如下所示: 我想按显示全部按钮。

我在 html 文件中找到的代码:

<div class="row top-buffer">
    <div class="col-md-6 col-sm-4 col-xs-6 nopadding">
        <button type="button" id="clearselection" class="btn btn-knx" style="float: right; margin: 0px">Clear selection</button>
    </div>
    <div class="col-md-6 col-sm-4 col-xs-6 nopadding">
        <button type="button" id="showall" class="btn btn-knx align-right" style="float: left">Show all</button>
    </div>
</div>

有人知道这是怎么做到的吗? ..顺便说一句,我需要在这个网站上按下一个按钮,否则我会手动操作。一旦我知道它是如何用一个按钮完成的,我就能为其他按钮弄清楚。

更新: 我想指出我无权访问 HTML 文件。我基本上想模拟网站访问者的按钮点击。对不起,我不清楚。

UPDATE-2: 我刚刚开始再次研究这个问题。我在网页中找到了按钮的Javascript 代码:

$('#showall').on('click', function () {
            $('.mask').show();
            $('#name').attr('value', '');
            $("#letter option").removeAttr('selected');
            $("#letter option[value='']").attr('selected', true);
            $.ajax({
                url: '/src/international/Data/partListAjax',
                type: 'POST',
                dataType: "html",
                data: {
                    data: $('#filterForm').serialize(),
                    wTexts: {"Company":"Company","Country":"Country","Name":"Name","Total":"Total","search":"Search","matches_found":"matches found","search_no_results":"Your search did not match any results."},
                    national: 'null',
                    currentProject: 'nma-en'
                },
                success: function (data) {
                    if (data.indexOf("Allowed memor") >= 0) {
                        $('#accordion2').html("<div class='alert alert-warning' role='alert'>Please use our search engine</div>");
                        $('.mask').hide();
                        $('#clearselection').attr('disabled', 'disabled');
                        $('#showall').attr('disabled', 'disabled');
                    } else {
                        $('#accordion2').html(data);
                        $('.mask').hide();
                        $('#clearselection').attr('disabled', 'disabled');
                        $('#showall').attr('disabled', 'disabled');
                    }
                }
            });
        });

如果调用按钮函数不起作用,我会尝试直接发送/触发函数中包含的Ajax 命令。

【问题讨论】:

标签: java html


【解决方案1】:

LordBullington,我也在我的网站上完成了这项工作,以下解决方案对我来说非常有效。

首先您需要向 UI 发送一个变量。

如果你使用 servlet,你可以这样做

request.setAttribute("clickbutton", "yes");

如果你使用的是 Spring,你可以这样做

Map<String, Object> model = new HashMap<String, Object>();
model.put("clickbutton", "yes");
return new ModelAndView("yourView", model);

然后在你的html中,保留一个隐藏变量来接收JAVA发送的变量。

<input type="hidden" id="clickbutton" value="${clickbutton}">

然后使用 Jquery 在页面加载时触发按钮。确保此 jquery 代码位于隐藏的输入标记之后。

$( document ).ready(function() {
    if(('#clickbutton').val()=='yes') {

       //use your button id here
       $("#youButtonIdHere").click();
    }
});

【讨论】:

  • 感谢您的回答,但我无权访问 HTML 文件。我仍然可以使用我拥有的按钮信息(id)模拟按钮点击吗?或者也许有一个工具来分析与网站的通信。所以我可以找出按下按钮时发送的内容。
【解决方案2】:

我终于通过使用Selenium WebDriver 让它工作了。我刚刚在 YouTube 上看到了一个教程,几个小时内一切都完成了。极好的。 :)

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2014-10-17
    相关资源
    最近更新 更多