我怎样才能提取由id,其CasperJS输入值?(How can I extract an inpu

2019-10-21 07:52发布

我有一个casperjs问题。 我无法从JavaScript的ID中获取价值。

我打开谷歌,搜索的术语,我想从ID搜索框的值。

var casper = require('casper').create({
    verbose: true,
    logLevel: "info"
});
var mouse = require("mouse").create(casper);
var x = require('casper').selectXPath;
var webPage = require('webpage');
var page = webPage.create();
casper.userAgent('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')
casper.start("http://www.google.com/ncr", function () {
    this.echo(this.getTitle());
}).viewport(1366, 768);

//casper.then(function() {
//this.sendKeys('#gbqfq', 'Duke');
//this.click('#gbqfsa');
//});
casper.waitForSelector(x('//*[@id="gbqfq"]'), function () {
    this.evaluate(function () {
        document.getElementById('gbqfq').value = "samearga";
        this.echo(this.document.getElementById('gbqfq').value);
    });
    console.log("\nEXISTA SELECTORUL!!! -> document.getElementById('gbqfq').value\n");
});

casper.waitForSelector(x('//*[@id="gbqfq"]'), function () {
    this.evaluate(function () {
        document.forms[0].submit();
    });
    console.log("\nSUBMITING!!!\n");
});

casper.wait(4000, function () {
    console.log("\nFAC POZA\n");
    casper.capture('caca.png');
});

casper.run();

Answer 1:

有两种可能性,以获得页面上输入的值。

  1. 您可以注册remote.message事件并将其记录在页面上

     // at the beginning of the script casper.on("remote.message", function(msg){ this.echo("remote> " + msg); }); // inside of the step casper.evaluate(function () { document.getElementById('gbqfq').value = "samearga"; console.log(document.getElementById('gbqfq').value); }); 
  2. 或从页面上下文返回字符串

     // inside of the step var inputValue = casper.evaluate(function () { document.getElementById('gbqfq').value = "samearga"; return document.getElementById('gbqfq').value; }); casper.echo(inputValue); 

你必须记住什么this意味着。 内页上下文(内部的casper.evaluatethis是指window ,但window不具有echo功能。 页面和卡斯帕上下文彼此(沙盒)不同,你不能只用所有的变量。 更多的文档 。



文章来源: How can I extract an input value by id with CasperJS?