javascript - 在单个脚本中声明两个或多个 casper

标签 javascript authentication session-cookies casperjs

我想要做的是声明两个caspers,两个将登录某个站点,一个将充当管理员,另一个将充当典型用户。我想在一个脚本中完成它。

是否可以在单个脚本中声明两个或多个 casper? 就像这个:

var casper1 = require("casper").create({
    verbose: true,  timeout: null
});

var casper2 = require("casper").create({
    verbose: true,  timeout: null
});

最佳答案

这在很大程度上取决于网站处理 session 的方式。如果这是通过每个请求中的唯一 ID 作为请求参数来完成的,那么这是可能的。但一旦使用cookie,这就不可能了。

CasperJS 就像一个浏览器。您可以有多个选项卡(casper 实例),但 session 由浏览器 (PhantomJS) 处理。即使您有多个 casper 实例,它们也会对相同的 cookie 进行操作,因此您无法同时以用户和管理员身份登录。这是因为 PhantomJS 处理 cookie,即使您有多个 casper 实例,下面也只有一个 phantomjs 进程。

如果管理界面位于另一个域上,则多个 casper 实例应该可以工作。经验法则是,如果您可以在具有多个选项卡的单个浏览器窗口中登录,则可以使用多个 casper 实例来实现。

因此,如果它们位于同一域并且使用了 cookie,您将需要使用不同的脚本来执行此操作。

您可能感兴趣的其他问题:

关于javascript - 在单个脚本中声明两个或多个 casper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25883624/

相关文章:

javascript - Cookie 不会在 POST 请求时随 JavaScript 一起发送

javascript - 如何注销打开的浏览器窗口

javascript - Node.js require 未加载本地文件

android - 使用 FirebaseAuth 电话号码验证进行测试

java - HttpServlet - 如何知道是否使用 SSL 客户端身份验证

c# - 如何通过 AAD 对 Azure 服务管理请求进行身份验证

javascript - 正则表达式匹配所有直到Javascript中的空行

javascript - Node js 扩展继承对象(作为枚举)

javascript - 在 angularJS 中关闭模态后重新加载数据

javascript - Angular 刷新终止用户 session