我的casperjs脚本播放视频,然后网页显示2个按钮,以继续查看或点击"填充"。 " fill选项就是我所追求的但是按钮具有相同的id,除了所需的选项有一个acivate-access()函数:
button id="activate" class="btn btn lg" onclick="activate_access();
我尝试过这样做。(' #activation')和this.click('#activate.btn.btn-lg')但这只是重新加载一个新视频,所以我想要使用casper.evaluate或其他方法,如何将正确的onclick事件(即acivate_access();)传递给casperjs? 代码:
var casper = require('casper').create({
logLevel: "warning",
verbose: true,
onPageInitialized: function() {
console.log("page opened");
},
});
casper.userAgent('Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36');
casper.viewport = {width:1200, height:800};
casper.start(url, function() {
casper.wait(1000, function() {
casper.capture('look.png');
console.log('did screenshot');
});
});
casper.wait(4000, function() {
console.log('clicking play');
this.click('#video');
casper.wait(37000);
casper.capture('play.png');
pres_url=this.getCurrentUrl();
console.log(pres_url);
});
casper.evaluate(function() {
document.getElementById('activate').click();
});
casper.wait(500);
casper.run();
答案 0 :(得分:0)
您没有进入页面上下文并使用DOM API或jQuery单击此元素。 CasperJS'click(selector)
完全有能力使用适当的选择器处理它。
CSS选择器支持基于其属性匹配元素。你用
casper.click("button[onclick='activate_access();']");
完美匹配甚至
casper.click("button[onclick*='activate_access']");
部分匹配。