2015-11-22 5 views
0

Привет всем Я новичок в javascript, и я пытаюсь изучить Casper.js/Phantom.js, но сегодня я столкнулся с проблемой. Я пытаюсь войти на сайт https://angel.co/login?utm_source=top_nav_home с автозаполнением. Мой код правильно заполняет имя пользователя и пароль, но мойКак нажимать кнопку без id на casperjs

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

не работает вообще. Поэтому моя программа не заходит в учетную запись. Когда я инспектировать элемент я не вижу идентификатор тега, я вижу имя, поэтому я использую 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, но это не сработало. Спасибо за вашу помощь.

+0

CasperJS имеет два контекста, а контекст страницы изолирован песочницей, поэтому 'casper' недоступен внутри' casper.evaluate() '. Кроме того, 'element.click()' почти никогда не работает. Вы должны использовать 'casper.click (" [name = 'commit'] ");' после вызова 'casper.evaluate()'. –

+0

@ Vohuman Это одна из проблем, но она наименее. –

+0

Открыт вопрос. – undefined

ответ

1

Я решил проблему с помощью довольно простой код

document.getElementsByName("commit")[0].click(); поскольку getElementsByName возвращает массив, мы должны дать адрес, чтобы это (например, [0] или другие значения). Я не буду редактировать или удалять этот вопрос, для других новичков на javascript, подобных мне. Спасибо всем

Смежные вопросы