반응형

Cucumber란?
BDD 기반의 개발방법론에 입각하여 비즈니스 레벨의 테스트 케이스를 생성한다.
BDD툴로는 Cucumber를 이용하며 Cucmber에서 정의하는 Feature와 Scenario에 대해 정의한다.
Java뿐만 아니라 다양한 언어를 지원하고 있어서 서버쪽의 java와 front쪽의 javascript를 일관되게 작성할 수 있다.

 

BDD란?
BDD(Behavior Driven Development)는 TDD(Test Driven Development)와 테스트 주도의 개발 방법론이지만 TDD는 개발자 중심의 방식이고
BDD는 비즈니스 Stakeholder들 중심의 방법론이고 개발자와 비즈니스 이해당사자들이 원활하게 커뮤니케이션할 수 있도록 도와주면서 동시에 그들과 커뮤니케이션하는 문서 자체가 테스트 케이스로의 역할을 함으로써 문서와 실제코드가 동기화되지 못해서 문서의 가치가 되색되버리는 문제도 함께 제거한다.

반응형

'프로그래밍' 카테고리의 다른 글

Nomadcorders Challenges 이용 후기  (0) 2020.01.20
Github pages  (0) 2020.01.19
Git과 Github 차이점  (0) 2020.01.06
maven이란?  (0) 2018.07.09
젠킨스란?  (0) 2018.07.09
반응형

이번에는 티스토리에 로그인하여 댓글을 확인하는 프로그램을 만들어보고자 한다.

 

티스로티 관리 페이지 주소는 http://블로그주소/admin/center  로 로그인하지 않은 상황에서 관리 페이지에 접속하면 아래와 같다.

 

여기에서 소스 분석을 하기 위해 개발자 도구를 열어보자. (F12 누르자)

아래와 같이 나오는데 아이디 입력창을 찍어보면 input name = loginId가 나온다. 이런 방식으로 찾아보자.

 

 

 

. form 태그의 ID는 authForm

. 아이디 입력 창의 name은 loginId

. 비밀번호 입력창의 name은 password

 

CasperJS에는 Form 태그에 값을 입력해서 전송할 수 있는 fill() 인터페이스가 있다.

 

Casper.fill(css 선택자, 값 객체, [, Submit 여부])

. CSS 선택자 : Form의 CSS 선택자

. 값 객체 : name과 value 속성 지정

. Submit 여부 : true일 경우, 전송까지 수행

 

그러면 티스토리에서는 어떻게 써야할까?

 

Casper.fill ("#authForm", {loginid: "ID"}, password:"password"}, true);

 

참 Comment를 가져오기 위해 evaluate() 메소드를 만들었는데 이것도 살펴보자.

 

casper.evaluate(함수[, 파라미터,[, 파라미터[, ..]]])

 

. 함수 : 페이지 내에서 수행하고 싶은 자바스크립트 함수 객체

. 파라미터 : 함수에 넘기고 싶은 파라미터

 

자 이렇게 만든 것을 한번 전체 소스를 봐보자...

 

소스 다운로드 : login.js

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var casper = require('casper').create({verbose: true, logLevel: "debug"});
 
// URL 및 로그인 정보 변수
var url = "http://nickoo.tistory.com/admin/center/";
var id = "";
var password = "";
 
casper.start();
 
casper.open(url);
 
// 아이디와 비밀번호 입력
casper.then(function() {
   casper.fill( "#authForm"
    { 
      loginId: id, 
      password:password
    }, true);
});
 
casper.then(function(){
    var getComment = function(){
      return document.querySelector("#blogInfo > ul > li:nth-child(3) > span.day").innerText;
    };
 
    // 결과 로그로 출력 
    console.log("새 댓글 수 : " + this.evaluate(getComment));
});
 
casper.then(function(){        
    var getGuestBook = function(){                
      return document.querySelector("#blogInfo > ul > li:nth-child(5) > span.day").innerText;
    };
    console.log("새 방명록 수 : " + this.evaluate(getGuestBook));
});
 
casper.run();
cs

 

 

결과 :

 

 

 

왜 이런 결과가 나오냐....후우...새 댓글과 새 방명록이 없기 때문이다....방문자수가 일 평균 60명이지만...단 한명도 댓글을 달지 않고 눈팅만 하고 간다는 건데...ㅜㅜ

아무래도 블로그 품질이 저하거나 볼품없어서 그런거 같다...

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

CasperJS 화면 캡쳐 프로그램  (0) 2017.04.08
웹사이트 제목 표시하는 소스코드  (0) 2017.04.08
CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
반응형

 

CasperJS 화면 캡쳐 프로그램

 

 

CasperJS로 화면 캡쳐하는 프로그램으로 이것도 소스가 마찬가지로 간단하다.

따로 설명한 것은 없고 주석으로 설명을 달아놓았으니, 누구라도 이해하기 쉬울 것이다.

 

소스 다운로드 : screenshot.js

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// CasperJS 화면 캡쳐 프로그램
 
// Casper 객체 생성 
var casper = require('casper').create();
 
// 시작
casper.start();
 
// 페이지 열기 
casper.open('http://nickoo.tistory.com');
 
// 스크린 샷 수행
casper.then(function() {
  casper.capture("screenshot.jpg");
});
 
// 실행 
casper.run();
 
cs

 

 

실행하는 방법 :

 

 

 

 

결과 :

 

 

 

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

티스토리에 로그인하는 방법  (1) 2017.04.09
웹사이트 제목 표시하는 소스코드  (0) 2017.04.08
CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
반응형

PhantomJS와 CasperJS를 사용하여 웹사이트에 접속 후 그 사이트의 제목을 표시하는 프로그램을 해보자.

 

소스가 워낙 간단해서 설명도 필요없다.

 

소스 다운로드 : getTitle.js

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var TARGET_URL = "http://nickoo.tistory.com";
 
// CasperJS 객체 생성
var casper = require('casper').create();
 
// 웹사이트 열기
casper.start(TARGET_URL, function()
{
// 타이틀 가져오기
   this.echo(casper.getTitle());
});
 
// 실행
casper.run();
 
cs

 

CasperJS를 사용했기 때문에 node getTitle.js가 아닌 casperjs getTitle.js로 입력해줘야 정상적으로 동작한다. 

 

 

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

티스토리에 로그인하는 방법  (1) 2017.04.09
CasperJS 화면 캡쳐 프로그램  (0) 2017.04.08
CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
반응형
PHP로 HTML Parser를 만들고자 할 때 유용하게 사용할 수 있는 모듈로 이름은 PHP Simple HTML DOM Parser 다.

Simplehtmldom사이트

특징

사용이 매우쉽고, Element를 선택하는 방법이 jQuery와 유사하다

예제

// google.com 사이트에서 html 문서를 읽어온다.

$html = file_get_html('http://www.google.com/');


// 모든 이미지를 찾아 src 태그를 출력한다.

foreach($html->find('img') as $element) 

       echo $element->src . '<br>';


// 모든 A 태그를 찾아 href 태그를 출력한다. 

foreach($html->find('a') as $element) 

       echo $element->href . '<br>';


// 모든 A 태그를 찾아 배열로 저장한다.

$ret = $html->find('a');


// ID가 foo 인 DIV 태그를 찾는다.

$ret = $html->find('div[id=foo]');


// 이런 식의 하위 Element를 찾는 것도 가능하다.

echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id; 


예제 사이트

반응형
반응형

CasperJS란?

 

PhantomJS를 조금 더 세밀하게 컨트롤 할 수 있는 기능들을 묶어놓은 라이브러리라고보면 된다.

 

Download URL : http://casperjs.org/

 

 

이것도 마찬가지로 커맨드창에서 아래와같이 입력하면된다.

 

npm install -g casperjs

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

CasperJS 화면 캡쳐 프로그램  (0) 2017.04.08
웹사이트 제목 표시하는 소스코드  (0) 2017.04.08
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
HTML 파일에서 링크 추출  (0) 2017.03.27
반응형

PhantomJS란?

 

PhantomJS는 인터페이스가 없는 headless 브라우저다. 웹사이트의 소스코드를 메모리에 불러오고 페이지의 자바스크립트를 실행하지만 그래픽을 전혀 렌더링 하지 않으며, 파이썬의 셀레니움 라이브러리와 함께 사용하면 자바스크립트와 쿠키, 헤더, 스크린샷 등 강력한 웹 크롤러를 만들 수 있게 된다.

 

Download URL : http://phantomjs.org/download.html

 

 

Node.JS에서는 사실상 다운을 받을 필요없이 커맨드창에 아래와 같이 명령어를 입력하면 된다.

 

npm install -g phantomjs

 

 

반응형
반응형

기상청의 RSS를 파싱에 'cheerio-httpcli' 를 사용하여 뿌려주는 방법

 

다운로드 : weather.js

 

RSS URL : http://web.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 기상청 기상예보 RSS(cheerio이용) for Node.js
 
// 기상 RSS
var RSS = "http://web.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109";
 
// 모듈 로드
var client = require('cheerio-httpcli');
 
// RSS 다운로드
client.fetch(RSS, {}, function(err, $, res) {
  if (err) { 
    console.log("error"); return
  }
 
  var city = $("location:nth-child(1) > city").text();
 
  // 필요한 항목을 추출해서 표시
  $("location:nth-child(1) > data").each(function(idx) {
 
    var tmEf = $(this).find('tmEf').text();
    var wf = $(this).find('wf').text();
    var tmn = $(this).find('tmn').text();
    var tmx = $(this).find('tmx').text();
    
    console.log(city + " " + tmEf + " " + wf + " " + tmn +"~" + tmx);
  });
});
 
cs

 

 

결과 

 

 

 

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
HTML 파일에서 링크 추출  (0) 2017.03.27
node.js 특정 페이지 출력하는 코드  (0) 2017.03.27
윈도우에서 'Node.js'와 'NPM'을 설치하기  (0) 2017.03.25
반응형

 HTML에 링크된 URL 목록을 출력하는 프로그램입니다.

 

코드는 아래와 같으며 $("a")로 되어 있는 부분은 <a> 태그를 추출하여 href 속성의 값을 콘솔에 출력합니다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var client = require('cheerio-httpcli');
 
var url = "http://nickoo.tistory.com";
var param = {};
 
client.fetch(url, param, function(err, $, res) { 
    if (err) { console.log("error"); return; }
    
    $("a").each(function(idx) {
        var text = $(this).text();
        var href = $(this).attr('href');
        console.log(text+":"+href);
    });
});
cs

 

 

 

결과물 :

 

 

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
node.js 특정 페이지 출력하는 코드  (0) 2017.03.27
윈도우에서 'Node.js'와 'NPM'을 설치하기  (0) 2017.03.25
반응형

명령어 프롬프트(cmd)에서

 

npm init
npm install cheerio-httpcli


인스톨을 한 후에

 

아래와 같은 예제 입력후 파일 저장 (ex. download.js)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var client = require('cheerio-httpcli');
 
var url = "http://nickoo.tistory.com";
var param = {};
 
client.fetch(url, param, function(err, $, res){
  if(err){console.log("error:", err); return;}
 
  var body = $.html();
  console.log(body);
 
});
 
 
 
cs

 

 

이렇게 한 후에 node download.js 를 명령어 프롬프트에 입력하면 HTML문서를 화면에 출력합니다.

 

 

반응형

'프로그래밍 > Node.js' 카테고리의 다른 글

CasperJS 설치  (0) 2017.04.07
PhantomJS 설치  (0) 2017.04.07
XML/RSS 파싱에 cheerio-httpcli 이용  (0) 2017.04.06
HTML 파일에서 링크 추출  (0) 2017.03.27
윈도우에서 'Node.js'와 'NPM'을 설치하기  (0) 2017.03.25

+ Recent posts