CasperJS 脚本找不到正确的按钮和 onclick 事件

CasperJS script does not find correct button and onclick-event

我的 casperjs 脚本播放视频,然后网页显示 2 个按钮,可以继续观看或单击 "fill"。 “填充选项是我所追求的,但按钮具有相同的 ID,除了所需的选项具有 acivate-access() 功能:

button id="activate" class="btn btn lg" onclick="activate_access();

我试过 this.click('#activate') 和 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();

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

CSS 选择器支持根据元素的属性匹配元素。您使用

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

完美匹配甚至

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

部分匹配。