【问题标题】:PhantomJS or CasperJS open page and execute bookmarkletPhantomJS 或 CasperJS 打开页面并执行书签
【发布时间】:2018-05-02 17:38:58
【问题描述】:

是否可以使用 PhantomJS 或 CasperJS 打开网页,然后在该页面上运行书签?

我想获取此结果的 DOM 以检查书签是否正确加载。

我已经在网上搜索并尝试了很多方法,但没有找到解决方案。

提前致谢。

【问题讨论】:

    标签: javascript phantomjs casperjs bookmarklet


    【解决方案1】:

    据我所知,我不相信 PhantomJS 或 CasperJS 使用书签使用的 javascript: 协议。

    或者,您可以使用casper.evaluate() 来执行网页中的书签内容:

    casper.evaluate(function () {
      // Insert your bookmarklet code here
    });
    

    之后您可以使用casper.getHTML() 获取生成网页的 DOM。

    【讨论】:

    • 感谢您的回复。但这似乎行不通。我尝试了 page.evaluateJavaScript,但出现以下错误:错误代码:301 协议“javascript”未知。还有其他方法可以测试我的书签吗?
    • 作为替代方案,您可以使用免费的“iMacros for Chrome”扩展程序以首选方式测试您的书签。 (当然,如果你愿意安装这样的插件并运行这个浏览器。)
    • @MisterPhantom 删除书签的 javascript: 部分,然后再将其放入函数中。
    • 非常感谢。协议错误通过删除javascript: 解决。但看起来我的外部 js 文件中的代码没有被执行。该文件具有创建新脚本元素的功能。这个脚本元素有一个 onload 属性,它应该从位于外部服务器上的另一个 js 文件调用 javascript 代码。 PhantomJS 给我一个 TypeError: undefined is not an object (evalating xxxfunctionName) Trace: in function "onload".
    • 看起来我已经设法加载了本地 javascript 文件。但是 PhantomJS 似乎不支持 ES6,这是服务器上的 javascript 文件使用的。所以现在我正在寻找如何使用 babel 来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多