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']");
部分匹配。
我的 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']");
部分匹配。