Javascript CasperJS:找不到登录表单
我尝试捕获一个表单,但它显示“未找到表单” 我做了下面的工作Javascript CasperJS:找不到登录表单,javascript,casperjs,Javascript,Casperjs,我尝试捕获一个表单,但它显示“未找到表单” 我做了下面的工作 this.test.assertExists('//*[@id="#loginForm"]', 'form is found'); this.fill('', { login:"**********", password:"**********", }, true); 下面是我的html代码 <form id="#loginForm" class="form-signin" role="form" meth
this.test.assertExists('//*[@id="#loginForm"]', 'form is found');
this.fill('', {
login:"**********",
password:"**********",
}, true);
下面是我的html代码
<form id="#loginForm" class="form-signin" role="form" method="POST" action="/login">
我也尝试过“form##loginForm”,但我总是看到“form not found”。'/*[@id=“#loginForm”]”
是一个XPath表达式。几乎所有CasperJS函数都支持XPath表达式,但您需要使用helper函数来区分XPath表达式和CSS选择器:
var x = require("casper").selectXPath;
...
this.test.assertExists(x('//*[@id="#loginForm"]'), 'form is found (xpath)');
this.test.assertExists('[id="#loginForm"]', 'form is found (css)');
其他问题可能是:
- 表单位于一个框架内,因此您需要切换到具有的框架
- 底层浏览器可能有问题。您可以注册不同的事件,以便了解可能出现的问题。您可以尝试
,resource.error
,page.error
和remote.message
事件()casper.page.onResourceTimeout
- 您还应该经常拍摄屏幕截图(
),以查看页面是否正确,或者页面是否已完全加载。如果不是,那么您需要调查原因以及前一步失败的原因。也许你只需要再等一次李>casper.capture()
如果以异步方式加载表单,则需要等待其显示如下:
var formSelector = x('//*[@id="#loginForm"]');
casper.waitForSelector(formSelector, function _then(){
this.fill(formSelector, {
login: "**********",
password: "**********",
}, true);
}, function _onTimeout(){
this.test.fail("Login form loaded");
} /* , 5000 */); // timeout is 5 seconds by default
还尝试了form[action=“/login”]您好,因为答案对我有帮助,但我仍然无法单击元素,因为工具只是检查html内容,登录表单在ajax调用后打开,这就是我的web元素都看不到的原因。你能帮我做些什么来检查每次页面加载时的ajax调用吗?请帮助我,我是一个初学者。我能亲自和你谈谈,了解更多这方面的情况吗