gpt4 book ai didi

phantomjs - 如何在每次测试之间完美隔离和清除环境?

转载 作者:行者123 更新时间:2023-12-04 17:19:51 27 4
gpt4 key购买 nike

我正在尝试使用 CasperJS 连接到 SoundCloud。有趣的是,一旦您登录并稍后重新运行登录功能,之前的登录仍然处于事件状态。在继续之前,这里是代码:

casper.thenOpen('https://soundcloud.com/', function() {
casper.click('.header__login');

popup = /soundcloud\.com\/connect/;

casper.waitForPopup(popup, function() {
casper.withPopup(popup, function() {
selectors = {
'#username': username,
'#password': password
};

casper.fillSelectors('form.log-in', selectors, false);

casper.click('#authorize');
});
});
});

如果您至少运行此代码两次,您应该会看到以下错误出现:
CasperError: Cannot dispatch mousedown event on nonexistent selector: .header__login

如果你分析日志,你会看到第二次,你被重定向到 https://soundcloud.com/stream意味着您已经登录。

我做了一些研究来清除每次测试之间的环境,但似乎以下几行不能解决问题。
phantom.clearCookies()
casper.clear()
localStorage.clear()
sessionStorage.clear()

从技术上讲,我真的很想了解这里发生的事情。也许 SoundCloud 构建了一个系统来存储一些服务器端的变量。在这种情况下,我必须在登录前注销。但我的问题是如何在每次测试之间完美隔离和清除所有内容?有人知道如何在每次测试之间使环境无符号吗?

最佳答案

要清除服务器端 session 缓存,请调用:phantom.clearCookies();帮我解决了这个问题。这清除了我在测试文件之间的 session 。
这里的例子:

casper.test.begin("Test", {
test: function(test) {
casper.start(
"http://example.com",
function() {
... //Some testing here
}
);
casper.run(function() {
test.done();
});
},
tearDown: function(test) {
phantom.clearCookies();
}
});

如果您仍有问题,请检查您执行测试的方式。

关于phantomjs - 如何在每次测试之间完美隔离和清除环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25007890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com