Не работал с селениумом, но много работал с
каспером.
Должно быть, принципы работы одинаковы.
Как делаю в каспере?
Возьмем базовый пример.
var casper = require('casper').create();
var links;
function getLinks() {
// Scrape the links from top-right nav of the website
var links = document.querySelectorAll('ul.navigation li a');
return Array.prototype.map.call(links, function (e) {
return e.getAttribute('href')
});
}
// Opens casperjs homepage
casper.start('http://casperjs.org/');
casper.then(function () {
links = this.evaluate(getLinks);
});
casper.run(function () {
for(var i in links) {
console.log(links[i]);
}
casper.done();
});
Его не обязательно заранее сохранять в файл, можно запустить из питона каспер без параметров и он будет ожидать инструкций в стандартный поток ввода.
Сразу весь скрипт посылать не стоит. Первой пачкой отправим
var casper = require('casper').create();
var links;
function getLinks() {
// Scrape the links from top-right nav of the website
var links = document.querySelectorAll('ul.navigation li a');
return Array.prototype.map.call(links, function (e) {
return e.getAttribute('href')
});
}
// Opens casperjs homepage
casper.start('http://casperjs.org/');
Через, например, секунду выполним
casper.then(function () {
links = this.evaluate(getLinks);
});
Через еще секунду проверим результат
casper.run(function () {
for(var i in links) {
console.log(links[i]);
}
});
Потом еще раз выполним:
casper.thenOpen('http://phantomjs.org', function() {
this.echo(this.getTitle());
});
casper.then(function () {
links = this.evaluate(getLinks);
});
И еще раз проверим результат:
casper.run(function () {
for(var i in links) {
console.log(links[i]);
}
});
И в конце завершим работу каспера:
casper.exit();
В каспере также есть собственная
система модульного тестирования.
Не уверен, что с селениумом будет сложнее/проще, принципы везде одинаковы.
См. документацию