我正在尝试使用 CasperJS'click()
点击在当前屏幕上生成模式的链接。当我查询正确的选择器并使用浏览器控制台中单击它时document.querySelector().click()
它有效,但即使当我casper.evaluate()
这不起作用。我发现有人有非常相似的问题,但他的问题仍未得到解答,而我遇到了几乎相同的问题。casperjs按钮点击不导航到下一页 https://stackoverflow.com/questions/21363895/casperjs-button-click-doesnt-navigate-to-next-page我目前使用的代码是
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 http://www.ted.com/talks/uri_alon_why_truly_innovative_science_demands_a_leap_into_the_unknown
使用 phantomjs 引擎确实不可能完成这些导航步骤。似乎 phantom 的 QtWebkit 分支(版本 1.9.7)不再能够胜任这项任务。虽然你的代码工作正常as is与 slimerjs 一起。你可以通过 npm 轻松安装 slimerjs:
npm install -g slimerjs
并运行你的脚本
casperjs --engine=slimerjs script.js
我用 phantomjs 尝试了几件事不工作。我添加了casper.on
听众remote.message
and resource.error
,但是在幻影中运行脚本时没有显示任何错误。logLevel: "debug"
也没有表现出任何东西。
First:使用 casperjs 函数。
casper.thenClick("div.talk-sharing__tools a.rate-button");
Second:尝试显式显示按钮的模式(特定于页面)。
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");
Third:让 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();
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)