在CasperJS中与弹出窗口共享cookie
Sharing cookies with popup window in CasperJS
我有一个CasperJS项目,需要一个新窗口(单击"#view_item"按钮时打开)才能访问父窗口的cookie和会话。当前,新窗口显示错误,因为它认为没有用户登录。
this.click("#view_item");
this.waitForPopup(/.+/, function() {
this.capture("parent_window.jpg");
});
this.withPopup(/.+/, function()
{
// Delay for testing
this.wait(2000);
this.capture("new_window.jpg");
});
在打开窗口,在弹出窗口中加载它们并刷新页面之前,除了将cookie转储到文件之外,我还能做些什么吗?
您可以尝试覆盖来自父窗口的cookie(这只比将其写入文件短一点)。
var cookie = this.evaluate(function(){
return window.document.cookie; // just a string
});
this.click("#view_item");
this.waitForPopup(/.+/, function() {
this.capture("parent_window.jpg");
});
this.withPopup(/.+/, function()
{
// Delay for testing
this.wait(2000);
this.evaluate(function(cookie){
window.document.cookie = cookie;
}, cookie);
this.wait(100); // little time to actually change the cookie
this.reload();
this.wait(2000, function(){ // only necessary if page is built with JS
this.capture("new_window.jpg");
});
});
我不认为有一个更简单的方法,如果子窗口还没有拿起饼干。也许casperjs的bug报告是合适的。
问题可能是你捕获的截图太早了。wait
是阶跃异步阶跃函数,而capture
是同步阶跃函数。在capture
之前调用wait
意味着wait
在 capture
之后执行。
this.wait(2000, function(){
this.capture("new_window.jpg");
});
相关文章:
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量
- 自定义社交共享未在窗口中打开
- 共享这将在一个新窗口中打开facebook共享
- 在javascript(客户端)中跨多个窗口共享数据
- 在不打开弹出窗口的情况下在Facebook上共享内容
- 单击共享此窗口的弹出窗口
- 如何使用 postMessage 在顶级窗口之间共享数据
- 社交共享链接弹出窗口在共享页面上未显示正确的URL
- Facebook共享对话框打开空白弹出窗口 - 但在重新加载时有效
- 谷歌地图API v3-所有标记共享相同的信息窗口
- 打开一个窗口并在选项卡之间共享
- 是否在浏览器选项卡/窗口之间共享requestAnimationFrame()调用
- 打开新窗口并从父窗口加载CSS和js,还可以共享会话
- 如何在同一域上跨窗口共享事件
- 通过窗口消息共享文件系统url的DOM异常
- 一个浏览器窗口中的所有选项卡共享一个JavaScript线程
- 如何在JavaScript中在窗口和框架之间共享数据
- 在CasperJS中与弹出窗口共享cookie
- 是Chrome扩展内容脚本范围共享时,打开一个新的选项卡与窗口.打开(自Chrome 45)