如何在casperjs上单击没有id的按钮

时间:2015-11-22 08:26:09

标签: javascript phantomjs casperjs

大家好,我是javascript的新手,我正在尝试学习Casper.js / Phantom.js,但今天我遇到了一个问题。我正尝试使用自动填充功能登录https://angel.co/login?utm_source=top_nav_home网站。我的代码正确填写了用户名和密码,但我的

casper.getElementsByName("commit").click();

根本不起作用。所以我的程序没有登录该帐户。当我检查元素时,我看不到任何id标签,我看到名称所以我使用getElementByName.My代码如下所示

    phantom.casperPath = 'C:/casperjs';
phantom.injectJs(phantom.casperPath + '/bin/bootstrap.js');
var casper = require('casper').create({
    pageSettings: {
        loadImages: false,
        loadPlugins: false,
        userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
    }
});

//First step is to open angellist
casper.start().thenOpen("https://angel.co/login", function () {
    console.log("angel website opened");
});


//lets fill username and pass login 
casper.then(function () {
    console.log("Login using username and password");
    this.evaluate(function () {
        document.getElementById("user_email").value = "myemail";
        document.getElementById("user_password").value = "mypassword";
      //casper.getElementsByName("commit").click();
      //THIS ONE ABOVE DOESN'T WORK  

    });
});

之后我拍了一个截图,但我发现它没有点击登录按钮。 我试图用xpath点击它,但它没有工作。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我通过使用相当简单的代码解决了这个问题

document.getElementsByName("commit")[0].click(); 因为getElementsByName返回一个数组,我们必须给出一个地址(如[0]或其他值)。我不会编辑或删除这个问题,对于像我这样的javascript上的其他新手。感谢大家