我有一个基本的 CasperJS 脚本,它将预定义的搜索词插入到亚马逊搜索框中,当我执行脚本并查看捕获的图像时,我可以很好地看到框中的文本。
然后我决定使其动态化,而不是预先定义搜索词,而是像这样通过命令行传递它。
casperjs amazon.js --barcode=4380758484375
但是,当我执行此操作时,当我查看捕获的图像时,我在亚马逊网站的搜索字段中没有看到任何文本。我知道该值正在被传递,因为我已经回显了它。
我的经验非常有限,本周末开始学习,我想知道是否需要定义 var。出于测试目的,条形码设置为通过命令行传递的值,并且条形码1是预定义的。
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。
最佳答案
By default, the cli object will process every passed argument & cast them to the appropriate detected type[...]
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");
关于javascript - 通过 CasperJS 命令行传递数字变量会导致一些字符而不是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773897/