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');
});
});
});
このコードを少なくとも 2 回実行すると、次のエラーが表示されます。
CasperError: Cannot dispatch mousedown event on nonexistent selector: .header__login
ログを分析すると、2 回目にhttps://soundcloud.com/streamにリダイレクトされたことがわかります。これは、すでにログインしていたことを意味します。
各テストの間に環境をクリアするためにいくつかの調査を行いましたが、次の行では問題が解決しないようです。
phantom.clearCookies()
casper.clear()
localStorage.clear()
sessionStorage.clear()
技術的には、ここで何が起こっているのかを理解することに非常に興味があります。おそらく、SoundCloud は、サーバー側にもいくつかの変数を格納するシステムを構築しました。この場合、ログインする前にログアウトする必要があります。しかし、私の質問は、各テスト間ですべてを完全に分離してクリアするにはどうすればよいですか? 各テスト間で環境を署名なしにする方法を誰かが知っていますか?