我正在尝试使用 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 构建了一个系统来在服务器端也存储一些变量。在这种情况下,我必须在登录前注销。但我的问题是我如何才能完美地隔离和清除每次测试之间的所有内容?有人知道如何在每次测试之间使环境无符号吗?