如何使用htmlunit单击javascript按钮?
我正在开发一个应用程序,它将使用Java中的htmlunit自动单击网页上的按钮。唯一的问题是该按钮是一个javascript按钮,所以标准的getInputByName()将无法工作。对此有什么建议吗?按钮的代码包含在下面如何使用htmlunit单击javascript按钮?,java,javascript,htmlunit,Java,Javascript,Htmlunit,我正在开发一个应用程序,它将使用Java中的htmlunit自动单击网页上的按钮。唯一的问题是该按钮是一个javascript按钮,所以标准的getInputByName()将无法工作。对此有什么建议吗?按钮的代码包含在下面 <a class="vote_1" id="1537385" href="/javascript%3Avoid%280%29/index"><img src="/images/parts/btn-vote.gif" alt="Btn-vote" />
<a class="vote_1" id="1537385" href="/javascript%3Avoid%280%29/index"><img src="/images/parts/btn-vote.gif" alt="Btn-vote" /></a>
此外,这里还有另一个投票代码
<div id="content"><script type="text/javascript" src="/js/scriptFeeds/voteArticle.js"></script>
这将导致以下javascript:
var pressed = new Array();
$j(document).ready(function() {
var nr = $j("input#number_of_articles").val();
for(var i=1; i<=nr; i++){
$j("a.vote_"+i).click(function(){
var article = $j(this).attr("id");
$j('#'+article).hide();
if (!pressed[article]) {
pressed[article] = "yes";
jQuery.post('/vote-article', {
_token: $j("#_token").val(),
article_id: article
},function(data) {
$j("span.numberOfVotes_"+data.id).html(data.votes);
}, "json");
}
return false;
});
}
});
var pressed=new Array();
$j(文档).ready(函数(){
var nr=$j(“输入文章数量”).val();
对于(var i=1;i尝试在firefox中使用此插件,它会记录您的操作并生成相同的HTMLUnit代码。可能会有所帮助。
可点击图像没有什么特别之处。类似这样的功能应该可以:
button = page.getHtmlElementById( "1537385" ) ;
page = button.click() ;
HtmlUnit随后将运行Javascript并返回更新的页面
如果“a”标记的id属性不是常量,您可能需要使用XPath来获取它。我的一个页面上有一个非常类似的链接。如果您可以在任何HtmleElement上调用.click(),它应该能够运行相关的Javascript。以下是我的代码(由HtmlUnitScript生成):
HtmlElement元素4=null;
Iterable iterable5=page.getAllHtmlChildElements();
迭代器i6=iterable5.Iterator();
while(i6.hasNext())
{
HtmlElement anElement=i6.next();
if(HtmlImage的元素实例)
{
HtmlImage输入=(HtmlImage)一个元素;
字符串[]元素=”http://example.com/pages/powerbutton.png“.分割(“/”);
if(input.getsrctattribute().indexOf(elements[elements.length-1])>-1)
{
元素4=输入;
打破
}
}
}
HtmlPage=element4.click();
我知道,我们将在htmlunit中使用java。感谢您提到HtmlUnitScript。它帮助我解决了[screenscraping问题]()。感谢您创建HtmlUnitScript。它帮助我解决了[screenscraping问题]()。
HtmlElement element4 = null;
Iterable<HtmlElement> iterable5 = page.getAllHtmlChildElements();
Iterator<HtmlElement> i6 = iterable5.iterator();
while(i6.hasNext())
{
HtmlElement anElement = i6.next();
if(anElement instanceof HtmlImage)
{
HtmlImage input = (HtmlImage) anElement;
String[] elements = "http://example.com/pages/powerbutton.png".split( "/" );
if(input.getSrcAttribute().indexOf(elements[elements.length-1] )> -1 )
{
element4 = input;
break;
}
}
}
HtmlPage page = element4.click();