Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript casperjs getelementbyid工作,但getelementbyname不工作_Javascript_Html_Casperjs - Fatal编程技术网

Javascript casperjs getelementbyid工作,但getelementbyname不工作

Javascript casperjs getelementbyid工作,但getelementbyname不工作,javascript,html,casperjs,Javascript,Html,Casperjs,好的,我正在尝试填充没有表单的html页面上的输入字段。我正在尝试这项工作,因为有特定的原因,只需要按照我正在尝试的方式进行 基本上这是我的html <tr> <td valign="top" nowrap width="120">Amount: <font size="2" color="#CC0000">*</font> </td> <td width="490"> <inpu

好的,我正在尝试填充没有表单的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('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技术没有方法
getElementByName()
。您可能需要的是
getElementsByName()
,它返回一个元素列表,而不仅仅是一个元素,因此您必须只获取列表中的第一项或处理整个列表(取决于您想要做什么)


打开浏览器的开发人员控制台以检查错误。当遇到问题时,这应该是您第一个看到的地方。document.getElementsByName('data')。value='0.01';我试过了,但还是没有填满it@user3407899-请阅读我的答案
getElementsByName()
返回对象列表,而不是单个对象。您还应该学习如何在浏览器错误控制台或调试控制台中查找错误消息,因为这通常也会告诉您做错了什么。我打开了casper控制台我没有收到错误我将在moment@user3407899-您可能会收到关于您在应用程序中尝试的两件事情的错误消息无法工作的原始代码。在这里,您尝试的只是向返回的列表对象添加一个
.value
属性,因此它不是一个错误,但也没有执行您想要的操作。你试过我答案中的代码了吗?谢谢jfriend是的,我看到了错误你能帮我做一件事吗如果可以的话我怎么能点击这个html按钮
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');
});
});
});    
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';
            });
        });
    });
});