“点击”网站按钮

时间:2017-12-28 14:55:16

标签: java html

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

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

列表选择器如下所示: I would like to press Show all button 我想按下全部显示按钮。

我在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命令。

2 个答案:

答案 0 :(得分: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();
    }
});

答案 1 :(得分:0)

我终于使用Selenium WebDriver让它工作了。我刚刚在YouTube上看到了一个教程,并在几个小时内完成了所有工作。难以置信。 :)