Javascript CasperJS:将图像上载到表单并处理
我正在尝试使用CasperJS来自动使用免费的OCR表单 表格分为三个步骤: 上载图像,单击预览,加载新页面 现在调整窗口忽略,单击OCR,加载新页面 翻录生成的文本数据 当前CasperJS脚本: Casper正在加载,你可以假设我的路径是正确的 我当前的错误: TypeError:“null”不是评估“文档”的对象。querySelector“ocr-result”。innerText' 可能的问题 页面导航不正确 从未上载图像文件Javascript CasperJS:将图像上载到表单并处理,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我正在尝试使用CasperJS来自动使用免费的OCR表单 表格分为三个步骤: 上载图像,单击预览,加载新页面 现在调整窗口忽略,单击OCR,加载新页面 翻录生成的文本数据 当前CasperJS脚本: Casper正在加载,你可以假设我的路径是正确的 我当前的错误: TypeError:“null”不是评估“文档”的对象。querySelector“ocr-result”。innerText' 可能的问题 页面导航不正确 从未上载图像文件 调试的一个好方法是抛出 casper.then(funct
调试的一个好方法是抛出
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);
});
我知道这是一个相当古老的问题,但对于任何遇到类似问题的人来说,希望这能有所帮助 在调用getReturnedText之前,一切看起来都应该正常工作 TypeError:“null”不是对象 'document.querySelector'ocr-result'.innerText' 我很确定错误是您试图选择的元素没有找到。这可能只是一个名称错误,或者上传的文件可能会使表单做出不同的反应。就像重定向到错误页面一样。前面的答案很好地说明了如何调试页面重定向到的内容/位置。了解发生了什么的另一个好方法是启用调试 var casper=require'casper'。创建{ 没错, 用户代理:“Mozilla/5.0 Windows NT 6.1;WOW64 AppleWebKit/537.36 KHTML,如Gecko Chrome/30.0.1599.101 Safari/537.36”, 日志级别:调试 };
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);
});