[英]CasperJS click() doesn't load new html
我正在尝试使用CasperJS的click()
来跟踪在当前屏幕上生成模态的链接。 当我查询正确的选择器并使用document.querySelector().click()
在浏览器控制台中单击它时document.querySelector().click()
它可以工作,但即使我casper.evaluate()
这个它也不起作用。 我找到了一个有类似问题的人,但他的问题仍然没有答案,我遇到了几乎相同的问题。 casperjs按钮单击不导航到下一页我正在使用的代码是
this.waitForSelector('div.talk-sharing__tools a.rate-button', function() {
this.then(function() {
this.evaluate(function() {
document.querySelector('a.rate-button').click();
});
我试图抓的页面是http://www.ted.com/talks/uri_alon_why_truly_innovative_science_demands_a_leap_into_the_unknown
使用phantomjs引擎执行这些导航步骤实际上是不可能的。 似乎幻像的QtWebkit分支(版本1.9.7)不再适用于任务。 虽然你的代码工作正常的是 slimerjs。 你可以通过npm舒适地安装slimerjs:
npm install -g slimerjs
并运行您的脚本
casperjs --engine=slimerjs script.js
我试过几件事情有没有工作 phantomjs。 我为remote.message
和resource.error
添加了casper.on
监听器,但是在幻像中运行脚本时没有显示任何错误。 logLevel: "debug"
也没有显示任何内容。
第一:使用casperjs函数。
casper.thenClick("div.talk-sharing__tools a.rate-button");
第二:尝试明确显示按钮的模态(特定于页面)。
casper.then(function(){
var name = this.evaluate(function(){
var modal = document.querySelectorAll(".modal-wrapper > .modal")[0];
modal.className += " modal--show";
return modal.className;
});
this.echo("name: "+name); // null
});
casper.waitUntilVisible(".modal__head__title");
第三:让jQuery完成工作。
var casper = require('casper').create({
remoteScripts: [ "http://code.jquery.com/jquery-1.11.1.min.js" ]
});
casper.waitForSelector(selector, function() {
this.evaluate(function() {
jQuery("a.rate-button").click();
});
});
今天遇到类似的问题。 在开始页面上执行this.click()
之后(我验证了PhantomJS正在执行 - 通过挂钩到resource.requested
和resource.received
事件),当前页面保留在起始页面上(它应该转到点击的链接页面)。
解决方案是更新到最新的PhantomJS(此时为1.9.8)。
请注意,当出现上述问题时,我有PhantomJS 1.9.7。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.