我正在尝试使用casperjs
提交表单,这是一个根据文档的简单任务。
但是,它只是不起作用。
以下是代码:
casper.test.begin('Logging in', nbTests, function(test) {
casper.start(A_SERVER);
casper.then(function() {
this.fill('form', {
'username': GOOD_LOGIN,
'password': GOOD_PASSWORD}, true);
this.waitUntilVisible('.success');
this.waitForText('Successful login', function (){
casper.test.assertExists('.success');
});
});
casper.run(function(){
test.done();
this.exit();
});
});
然而,这样做会返回:
# Logging in
PASS Found an element matching: form
FAIL Redirection to dashboard after successfull login.
# type: assertExists
# file: /home/fx/SRC/server/tests_integration/ti_login.js:28
# code: test.assertExists('.success', "Redirection to dashboard after successfull login.");
# subject: false
# selector: ".success"
Unsafe JavaScript attempt to access frame with URL http://127.0.0.1:8000/accounts/login/ from frame with URL file:////etc/local/bin/casperjs/bin/bootstrap.js. Domains, protocols and ports must match.
第一个麻烦当然是失败。但是,我也担心另一个警告(随机发生)。 你对此有所了解吗?
编辑:我重构了代码,现在它可以工作了。但是,我不明白为什么。是否有人愿意解释这个问题?
答案 0 :(得分:1)
您可以尝试像这样运行CasperJS:
casperjs --web-security=false test test.js
这将允许跨域XHR,这可能对您的情况有用。
答案 1 :(得分:0)
事实上,我刚刚使用casperjs
。以下是我设法生成的功能代码:
casper.test.begin('Logging in', nbTests, function(test) {
casper.start(A_SERVER + A_LOGIN);
casper.then(function goodInput(){
this.fill('form', {
'username': GOOD_LOGIN,
'password': GOOD_PASSWORD}, true);
this.waitUntilVisible('#id_file_field');
this.waitForText('Successful login', function (){
casper.test.assertExists('#id_file_field', "Login successful");
});
casper.run(function(){
test.done();
});
});
但是,我仍然不知道造成XHR问题的原因。