我正在尝试使用CasperJS自动使用免费的OCR表单。
表单需要三个步骤:
当前的CasperJS脚本:
phantom.casperPath = '{PATH_TO_CASPER_JS}';
phantom.injectJs(phantom.casperPath + '\\bin\\bootstrap.js');
var system = require('system')
var page = require('webpage').create();
var casper = require('casper').create();
function getReturnedText() {
return document.querySelector('#ocr-result').innerText;
}
casper.start('http://www.newocr.com/', function() {
this.page.uploadFile('input[type="file"]', '{PATH_TO_JPEG}');
this.click('button[name="preview"]');
});
casper.thenEvaluate(function() {
this.click('button[name="ocr"]');
});
casper.run(function() {
this.echo(getReturnedText());
phantom.exit(1);
});
Casper正在加载正常,您可能认为我的路径是正确的。
我当前的错误:
TypeError:'null'不是对象(评估'document.querySelector('#ocr-result')。innerText')
可能出现的问题
答案 0 :(得分:2)
调试的好方法是抛出
casper.then(function () {
this.capture('wtfishappening.png', { top: 0, left:0, width:1020, height:2050});
});
...某处,所以你确切地知道你的测试是什么。我的猜测是你的文件没有被正确选中。
试试这个
var fileName='<path to file>';
x = require('casper').selectXPath;
casper.then(function(){
this.test.info('selecting file to upload');
this.evaluate(function(fileName) {__utils__.findOne('input[type="file"]').setAttribute('value',fileName)},{fileName:fileName});
this.echo('Name='+this.evaluate(function() {return __utils__.findOne('input[type="file"]').getAttribute('name')}));
this.echo('Value='+this.evaluate(function() {return __utils__.findOne('input[type="file"]').getAttribute('value')}));
this.page.uploadFile('input[type="file"]',fileName);
});
答案 1 :(得分:0)
我知道这是一个相当古老的问题,但对于遇到类似问题的人来说,希望这会有所帮助。
在调用getReturnedText时,一切看起来都应该正常工作。
TypeError:'null'不是对象(评估 'document.querySelector(' #OCR-结果 ')。的innerText')
我很确定错误是您尝试选择的元素未找到。这可能只是一个名称错误,或者上传的文件可能会使表单做出不同的反应。就像重定向到各种错误页面一样。前面的答案很好地说明了如何调试页面重定向到的位置/位置。找出正在发生的事情的另一个好方法是启用调试。
var casper = require('casper').create({
verbose: true,
userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
logLevel: "debug"
});
所以调试和图片应该可以帮助你找出真正发生的事情。