javascript - CasperJS click() 不加载新的 html

标签 javascript html phantomjs casperjs

我正在尝试使用 CasperJS 的 click() 来跟踪在当前屏幕上生成模态的链接。当我查询正确的选择器并使用 document.querySelector().click() 在浏览器控制台中单击它时,它起作用了,但即使我 casper.evaluate() 这它不起作用。我发现有人遇到了非常相似的问题,但他的问题仍未得到解答,而我遇到的问题几乎相同。 casperjs button click doesn't 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

最佳答案

用 phantomjs 引擎做那些导航步骤真的是不可能的。似乎 phantom 的 QtWebkit 分支(版本 1.9.7)不再能胜任这项任务。尽管您的代码在 slimerjs 中原样工作正常。您可以通过 npm 轻松安装 slimerjs:

npm install -g slimerjs

并运行你的脚本

casperjs --engine=slimerjs script.js

我用 phantomjs 尝试了一些不起作用的东西。我为 remote.messageresource.error 添加了 casper.on 监听器,但是在 phantom 中运行脚本时没有显示任何错误. 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();
    });
});

关于javascript - CasperJS click() 不加载新的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197587/

相关文章:

javascript - 在 React 中构建大型列表时 UI 滞后几秒钟

html - 错误消息 "drive.google.com refused to connect."

javascript - 如何将平方根添加到我的 JavaScript/HTML 计算器中?

javascript - 如何使用 PhantomJS 在外部域上设置 cookie

javascript - 使用 PhantomJS 的 jQuery 错误

javascript - 从下拉按钮中以编程方式选择元素

javascript - 通过javascript在html标签内添加额外的属性

javascript - 如何将依赖项添加到我的 Spine 应用程序?

javascript - D3 从最右边的字符对齐轴左侧的文本

npm - 强制使用 1.9.8 PhantomJS 和 karma-phantomjs-launcher