Phantomjs 将CasperJS作为包含在网页中的Javascript运行,并以交互方式执行CasperJS命令

Phantomjs 将CasperJS作为包含在网页中的Javascript运行,并以交互方式执行CasperJS命令,phantomjs,casperjs,Phantomjs,Casperjs,CasperJS(带有phantomJS)是否可以直接在浏览器中运行,而不是通过命令行运行 我想在浏览器中运行一个交互式测试,从用户那里获取输入并相应地进行。我希望将casperJS作为一个普通的javascript函数运行,该函数在浏览器中执行,并能够向用户生成每个命令的输出,这样用户就可以决定下一步要做什么。简短的回答是:不,不像您描述的那样。CasperJS运行在PhantomJS上,并且依赖于PhantomJS,PhantomJS是一种浏览器,它不能在用户的浏览器中运行 如果希望通过网页

CasperJS(带有phantomJS)是否可以直接在浏览器中运行,而不是通过命令行运行


我想在浏览器中运行一个交互式测试,从用户那里获取输入并相应地进行。我希望将casperJS作为一个普通的javascript函数运行,该函数在浏览器中执行,并能够向用户生成每个命令的输出,这样用户就可以决定下一步要做什么。

简短的回答是:不,不像您描述的那样。CasperJS运行在PhantomJS上,并且依赖于PhantomJS,PhantomJS是一种浏览器,它不能在用户的浏览器中运行


如果希望通过网页提供交互式CasperJS会话,则需要在服务器上运行Casper/Phantom,然后通过该服务器代理输入/输出。基本上,任何需要获取其他网页并与之进行抓取或交互的操作都可能需要服务器端机制,因为同源策略使得使用客户端JavaScript实现这一点非常困难(尽管浏览器扩展可能能够做到).

能否更具体地说明为什么要在浏览器上运行测试?如果用户正在与浏览器交互,那么为什么需要casper重复相同的交互?我的目标是创建一个脚本会话,用户不直接与目标网页交互,我想你可能正在寻找js来做导游,这是一个很好的例子,还有其他的框架允许这样做。但是,如果您想在可见会话上执行断言,casperjs不是该任务的工具。此外,如果您使用用户浏览器作为测试平台,您也不需要phantomJS,您可能需要将处理导航的customjs(或开源js)代码与某种断言库结合起来,尽管我不太明白这一点。我希望做您在第二段中提到的事情。你能解释一下关于完美的细节吗!我通过运行嵌入式mongose web服务器模块(phantomjs可分发模块的一部分)实现了第二段。然后,只需使用jsonp将命令传递给web服务器,使用js eval运行命令并将结果返回给调用页面!听起来不错-请注意,如果在PhantomJS上下文中运行,那么使用您描述的
eval
确实非常危险,因为任何访问该站点的人都可以编写能够访问和写入服务器文件的JS,从而有效地为服务器打开了大门。仅供参考。当前设置仅用作POC。在生产版本中,用户输入将通过应用服务器进行路由,并在应用服务器上进行过滤,只有应用服务器才允许将命令传递给mongose web服务器,从而防止执行任何恶意用户指令。