我正在学习CasperJS并希望尝试一个简单,有用的任务。我想制作一份天然气账单的pdf副本,但我甚至无法登录网站。
我是CT Natural Gas的客户。网址是:
https://www.cngcorp.com/wps/portal/cng/home/mycng/customerWebAccess/
登录应该很简单。它应该只是我的帐号和姓氏。
我的代码是:
var start_url = "https://www.cngcorp.com/wps/portal/cng/home/mycng/customerWebAccess/"
var casper = require('casper').create()
casper.start(start_url, function() {
this.fill('formid', {
'input1id': '000000000000',
'input2id': 'LastName'
}, true);
this.capture('cng.png');
})
casper.run()
我的“真实”代码使用网站HTML中显示的完整ID,而不是“formid”或“input1ID”。我没有在上面的示例代码中包含完整的ID,因为我不确定这些ID到底是什么。它们看起来像:viewns_7_LOIGMC7IA21234QWERASDF1234_:custWebLogin。这么多“简单”的身份证。也许这是从WebSphere产品生成的东西?
无论如何,找不到表格。我明白了:
CasperError: Errors encountered while filling form: form not found
我也已经将其破解并将其放入我的start
中以查看“看起来像”的形式:
listItems = this.evaluate(function () {
var nodes = document.querySelectorAll('form');
return [].map.call(nodes, function(node) {
return node.id;
})
})
this.echo(listItems);
返回:
,viewns_7_LOIGMC7IA21234QWERASDF1234_:custWebLogin
我认为表格ID搞砸了。任何人都可以提出任何建议吗?
答案 0 :(得分:1)
等待加载表单以使用selectors填充表单。使用waitForSelector(),waitFor(),wait()等而不是waitForResource()
casper.start('your_url_here',function(){
this.echo(this.getTitle());
});
casper.waitForResource("your_url_here",function() {
this.fillSelectors('#loginform', {
'input[name="Email"]' : 'your_email',
'input[name="Passwd"]': 'your_password'
}, true);
});
答案 1 :(得分:0)
我认为DOM / CSS3 Selectores不能使用此ID,但它适用于xpath:
// Create a function for selectXPath :
var x = require('casper').selectXPath
var start_url = "https://www.cngcorp.com/wps/portal/cng/home/mycng/customerWebAccess/"
var casper = require('casper').create()
casper.start(start_url, function() {
// Query xpath with fillSelectors
this.fill(x('//*[@id="viewns_7_LOIGMC7IA26I00I9TQ9SLI1B12_:custWebLogin"]'), {
'input1id': '000000000000',
'input2id': 'LastName'
}, true);
this.capture('cng.png');
})
casper.run()
答案 2 :(得分:0)
您需要完整的身份证吗?因为这样的事情可能有用:
this.fill("form[id^='viewns_7_LOIGMC7IA21234QWERASDF1234']", {
'input1id': '000000000000',
'input2id': 'LastName'
或者
this.fill("form[id*='LOIGMC7IA21234QWERASDF1234']", {
'input1id': '000000000000',
'input2id': 'LastName'