CasperJS click() 不加载新的 html

2024-03-21

我正在尝试使用 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(使用前将#替换为@)

CasperJS click() 不加载新的 html 的相关文章

随机推荐