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调用吗?请帮助我,我是一个初学者。我能亲自和你谈谈,了解更多这方面的情况吗