CasperJS脚本找不到正确的按钮和onclick-event

时间:2016-02-26 10:39:43

标签: javascript button css-selectors casperjs

我的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();

1 个答案:

答案 0 :(得分:0)

您没有进入页面上下文并使用DOM API或jQuery单击此元素。 CasperJS'click(selector)完全有能力使用适当的选择器处理它。

CSS选择器支持基于其属性匹配元素。你用

casper.click("button[onclick='activate_access();']");

完美匹配甚至

casper.click("button[onclick*='activate_access']");

部分匹配。