javascript - 通过 CasperJS 命令行传递数字变量会导致一些字符而不是数字

标签 javascript casperjs

我有一个基本的 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。

最佳答案

参见Raw parameter values :

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/

相关文章:

javascript - 有没有办法控制casper的控制台输出?

javascript - CasperJS - 文档/jquery 完全加载后获取生成的源

javascript - CasperJS 中 casper.echo 和 console.log 的区别

javascript - 由于正在加载modernizr,单击时表单未提交

javascript - 如何在 HTML 元素中显示 JavaScript 函数的输出而不是 JavaScript 警报?

javascript - 从 Python 上的 post 方法获取变量

cygwin - 如何让 PhantomJS/CasperJS 在 Cygwin 上运行?

javascript - 如何在iOS中绘制特殊折线条形图(引用我的图)

javascript - 如何在页面中间设置成功提醒?

ajax - CasperJS 无法抓取 AJAX 网页