我有一个基本的CasperJS脚本,它将预定义的搜索词插入到亚马逊搜索框中,当我执行脚本并查看捕获的图像时,我可以看到方框中的文字。
然后我决定让它变得动态,而不是预先定义搜索词,而是通过命令行传递它。
casperjs amazon.js --barcode=4380758484375
然而,当我这样做时,当我查看捕获的图像时,我在亚马逊网站的搜索字段中没有得到任何文本。我知道价值正在传递,因为我已经回应了它。
我本周末非常有限且开始学习的经历,我想知道是否需要定义var。出于测试目的,条形码设置为通过命令行传递的值,并且barcode1是预定义的。
var casper = require('casper').create();
var x = require('casper').selectXPath;
casper.userAgent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
casper.echo("Casper CLI passed args:");
require("utils").dump(casper.cli.args);
casper.echo("Casper CLI passed options:");
require("utils").dump(casper.cli.options);
var barcode = casper.cli.get("barcode");
var barcode1 = "5030945112877"; //casper.cli.get("barcode");
casper.echo("*"+barcode1+"*");
casper.start('https://www.amazon.co.uk/');
casper.then(function () {
this.sendKeys('#twotabsearchtextbox', barcode);
console.log('Entering Search Term '+barcode+' Into Amazon Search Field');
casper.capture('amazon.png');
});
casper.run();
如果我设置--barcode=fifa
则有效。如果我将其设置为--barcode=fifa123
它也可以,但是如果我将其设置为--barcode=123
,则在捕获图像中我会看到对应于123的扩展字符。
答案 0 :(得分:1)
默认情况下,cli对象将处理每个传递的参数&将它们转换为适当的检测类型[...]
CasperJS会自动将CLI选项解析为适当的类型。如果输入数字,它将被转换为数字。这不是问题,但由于此数字被传递到casper.sendKeys()
,因此不会将其视为字符串。 casper.sendKeys()
是PhantomJS'page.sendEvent()
的包装器,它将整数视为char codes。
您需要使用原始值或自己转换为字符串:
var barcode = casper.cli.raw.get("barcode");
// or
var barcode = "" + casper.cli.get("barcode");
答案 1 :(得分:0)
经过一些跟踪和错误后,似乎只通过命令行传递一个数字就是存在问题的地方。
使用
casper.cli.raw.get("barcode");
而不是
casper.cli.get("barcode");
解决了这个问题,这是由于我可以看到CasperJS版本的机会。还找到了对以下网站https://github.com/casperjs/casperjs/issues/248
的引用