我想用Java
解析网站中的列表。我已经知道如何使用Jsoup
解析列表 - 所以这部分已经完成并正常工作。
但是,要在网页中显示列表,我需要按一个按钮,我不知道如何使用Java。我已经在SO上找到了类似的问题:Programmatically click a webpage button。我想我可以使用HttpURLConnection
和KVP
,但我不知道如何让它发挥作用。
我在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
命令。
答案 0 :(得分:1)
首先,您需要向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上看到了一个教程,并在几个小时内完成了所有工作。难以置信。 :)