返回只读<input type =“text”/>的内容

时间:2015-06-22 02:11:24

标签: javascript html xpath phantomjs casperjs

这是HTML:

<div id="ifld1014" class="ax-terminal-field x20" title="" style="top: 272px;
left: 154px;"><input type="text" maxlength="30" size="30" 
class="ax-terminal-inputField ax_x20i" readonly="readonly" style="width: 240px;"></div>

以下是我的一些casper代码:

var x = require('casper').selectXPath;
....//truncated for shortness//....
    casper.echo(x('//*[@id="ifldf14"]/input').value);

未定义的结果。我尝试了.value,.text,.innerHTML,但是在运行时它们都是未定义的。如何获取输入字段的内容?

2 个答案:

答案 0 :(得分:1)

DOM上下文

CasperJS沙盒DOM上下文(页面上下文)。只有在那里你才能直接访问DOM元素。页面上下文位于casper.evaluate()回调内。关于DOM元素的其他所有内容都只是它的表示,因为DOM节点不能传递给外部上下文。

访问输入值

有很多方法可以从DOM中获取信息,但DOM节点无法按原样打印到控制台。以下是获取输入值的两种方法。

  1. 您可以使用casper.evaluate()。由于您要使用XPath表达式,因此可以使用CasperJS注入的__utils__.getElementByXPath()辅助函数到页面中:

    var value = casper.evaluate(function(xpathexpr){
        return __utils__.getElementByXPath(xpathexpr).value;
    }, '//*[@id="ifldf14"]/input');
    casper.echo("value: " + value);
    
  2. 如果输入字段位于表单内,并且元素具有name属性,则可以使用casper.getFormValues()并使用字段名称获取值。

    casper.echo(casper.getFormValues('form').nameHere);
    
  3. XPath帮助程序实用程序

    var x = require('casper').selectXPath;
    

    只是一个小帮手,可以将字符串转换为具有属性typepath的对象。它仅在内部用于CasperJS以表示XPath。区别是必要的,因为CasperJS支持CSS选择器和XPath表达式。它们最初都是简单的字符串,但执行方式不同。

答案 1 :(得分:0)

问题是我没有使用jQuery来获取我的价值。感谢大家的投入!