我有一个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转储到文件中吗?
答案 0 :(得分:0)
您可以尝试从父窗口覆盖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");
});
});
如果子窗口没有取出cookie,我认为没有更简单的方法。也许casperjs的错误报告是有序的。
问题可能是您早期捕获屏幕截图。 wait
是步骤异步步骤函数,而capture
是同步的。在wait
之前调用capture
表示在 wait
之后执行<{1}} {。}}。
capture