【问题标题】:CasperJS click() in evaluate immediately returns null, ignores other lines评估中的 CasperJS click() 立即返回 null,忽略其他行
【发布时间】:2015-11-18 23:03:19
【问题描述】:

我正在尝试在 CasperJS 中编写评估函数,但是当我调用点击事件时遇到了问题。这是一个快速的代码块来说明这个问题:

returnVal = casper.evaluate(() ->
    document.querySelector('.class').click()
    return true

returnVal 在上述情况下始终为 null,即使该类存在。

在我的实际代码中,我有很多代码要运行,并且我想在整个过程中执行多个点击事件。

CasperJS 的设计是在调用click() 时立即返回吗?还是我错过了一些非常简单的东西?

【问题讨论】:

    标签: javascript click phantomjs casperjs


    【解决方案1】:

    当您注册某些错误事件时,例如“page.error”:

    casper.on("page.error", function(msg, trace) {
        this.echo("Error: " + msg);
    });
    

    然后你会看到click()不是一个可以调用的函数。 PhantomJS 1.x 仅在 <input><button> 元素上支持 click(),即使这样也不一致。如果您想要一致的行为,请使用 CasperJS 自己的点击功能:

    casper.then(function(){
        this.click(".class");
    });
    

    evaluate() 调用的结果始终为 null (undefined),因为永远不会执行 return 语句。在此之前的行中会抛出一个未捕获的错误。

    这是用 JavaScript 编写的,但适用于 CoffeeScript 的方式完全相同。

    【讨论】:

    • 谢谢。绝对没有办法在评估函数中执行正常的 JavaScript 点击事件吗?我正在处理的网站使用虚拟 DOM,所以 this.click(".class") 很遗憾不起作用
    • 您可以在this way 的页面上下文中添加自定义合成点击功能,但我怀疑这会更好。我想你需要弄清楚虚拟节点背后的真实 DOM 节点是什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多