casperjs getelementbyid工作,但getelementbyname无法正常工作

时间:2014-03-22 23:32:06

标签: javascript html casperjs

好吧我正在尝试填写没有表格的html页面上的输入字段我正在尝试这项工作因特定原因而且只需要按照我尝试的方式进行。

基本上这里是我的HTML

    <tr>
    <td valign="top" nowrap width="120">Amount: <font size="2" color="#CC0000">*</font>    </td>
    <td width="490">
    <input type="text" name="data" size="20" maxlength="20" value="">
    <select name="Percent"><option value="2" >NUM</option><option value="1" >num2</option><option value="3" selected>resultin</option></select>
    <div class="error"></div>
    </td>
    </tr>
   <td width="490">
      <input type="text" name="account" id="account" size="20" maxlength="20" value="">
    </td>

现在,当我使用它将文本插入到帐户字段中时,每件事情都有效

if(casper.exists(ac1)){
var uel = "https://example.com";
this.thenOpen(uel, function() {
casper.wait(10000, function() {    
  casper.then(function() {
    this.evaluate(function() {
      document.getElementById('account').value = '345de';


    });
casper.wait(10000, function() {
  casper.then(function() {
    this.capture("filenadfgmedsfg.jpg");
    var el2 = this.getHTML();
    fs.write('results23.html', el2, 'w');
});
});
});

但是当我尝试下面的任何一个来填充输入数据字段时,我无法使其工作

if(casper.exists(ac1)){
var uel = "https://example.com";
this.thenOpen(uel, function() {
casper.wait(10000, function() {    
  casper.then(function() {
    this.evaluate(function() {
      document.getElementById('data').value = '345de';


    });
casper.wait(10000, function() {
  casper.then(function() {
    this.capture("filenadfgmedsfg.jpg");
    var el2 = this.getHTML();
    fs.write('results23.html', el2, 'w');
});
});
});

这个不起作用请帮我解决这个问题

if(casper.exists(ac1)){
var uel = "https://example.com";
this.thenOpen(uel, function() {
casper.wait(10000, function() {    
  casper.then(function() {
    this.evaluate(function() {
      document.getElementByName('data').value = '345de';


    });
casper.wait(10000, function() {
  casper.then(function() {
    this.capture("filenadfgmedsfg.jpg");
    var el2 = this.getHTML();
    fs.write('results23.html', el2, 'w');
});
});
});    

任何人都可以向我展示一种使用simaler方式填充数据字段的方法来获取getElementBy技术

1 个答案:

答案 0 :(得分:2)

没有方法getElementByName()。您可能想要的是getElementsByName()并且它返回一个元素列表,而不仅仅是一个元素,因此您必须只获取列表中的第一个项目或处理整个列表(取决于您想要做什么)

var uel = "https://example.com";
this.thenOpen(uel, function () {
    casper.wait(10000, function () {
        casper.then(function () {
            this.evaluate(function () {
                document.getElementsByName('data')[0].value = '345de';
            });
        });
    });
});