如何将变量值传递给casperjs中的sendKeys

时间:2014-07-29 03:42:58

标签: casperjs sendkeys

我在casperjs中遇到sendKeys的以下问题。 我试图将端口作为选项传递给casperjs,这是有效的,但是当我尝试使用casper.cli.get的端口值时,它在sendKeys中不起作用!!!

var casper = require('casper').create();
casper.echo("Casper CLI passed args:");
require("utils").dump(casper.cli.args);

casper.echo("Casper CLI passed options:");
require("utils").dump(casper.cli.options);

if (casper.cli.has("ip") === false) {
  casper.echo("Usage: casper.js test modify_port.js --ip=<x.x.x.x> --port=<xxxxx>").exit();
}
if (casper.cli.has("port") === false) {
  casper.echo("Usage: casper.js test modify_port.js --ip=<x.x.x.x> --port=<xxxxx>").exit();
}
...
    casper.then(function() {
        test.assertTextExists("Change", "Data Base - Change - port");
        this.sendKeys('input[name="Params.port"]', casper.cli.get("port"));
        this.click('input[name="Apply"]');
    });

以上方式似乎不起作用,它也没有给我带来错误信息。 但是当我在sendKeys行中对端口进行硬编码时,我发现端口已经改变,如:

this.sendKeys('input[name="Params.port"]', '29999');

这也很好(硬编码):

var myPort = '29999'
this.sendKeys('input[name="Params.port"]', myPort);

但这再次无效:

var myPort = casper.cli.get("port")
this.sendKeys('input[name="Params.port"]', myPort);

谢谢你。你的时间

2 个答案:

答案 0 :(得分:1)

经过一些阅读之后,我逐步介绍了casperjs文档中有关Raw参数值的部分。

所以,我想通过这种方式使用我的参数:

this.sendKeys('input[name="Params.port"]', casper.cli.raw.get('port'));

答案 1 :(得分:1)

当将变量传递给sendKeys时,它们不会出现在表单中,除非它们前面带有空字符串&#34;&#34;。

this.sendKeys("selector", "" + variable);

我想这可能是因为sendKeys只能处理string类型的变量。

Source