[첫화면으로]Perl/WWW-Mechanize-Firefox

마지막으로 [b]

Cpan:WWW::Mechanize::Firefox

1. 개요
2. 유용한 옵션이나 메쏘드
3. 버그?
3.1. (해결됨) Firefox 창이 둘 이상 있을 때 사용이 끝난 탭을 닫을 수 없는 문제
4. MozRepl 부가 기능 필요
4.1. Firefox 20.0 에서 동작하지 않는 문제
5. Comments

1. 개요

아주 좋다 -_-b 정말 좋다.

/WWW-Mechanize의 단점은 자바스크립트를 처리하지 못한다는 것. 그래서 최근에 링크나 버튼의 동작을 자바스크립트로 제어하게 되어 있는 사이트에서는 쓰기가 매우 힘들었는데... 이 모듈은 자기가 firefox를 구동해서 웹사이트에 접근한다. 그래서 버튼이나 특정 영역을 클릭하는 동작 등을 그대로 시킬 수 있다.

my $fox = WWW::Mechanize::Firefox->new();
...
# id가 qbi인 span 태그를 찾고
my $camera = $fox->selector( 'span#qbi', single => 1 );
# 그걸 클릭
$fox->click( { dom => $camera, synchronize => 0 } );
...
# 아예 웹페이지에 있는 자바스크립트 함수를 곧바로 실행시켜 버릴 수도 있다.
$fox->eval( 'google.qb.ti(true)' );

# 결과를 가져오는 건 WWW::Mechanize와 똑같이 하면 됨
my $content = $fox->content()

2. 유용한 옵션이나 메쏘드

WWW::Mechanize::Firefox->new() 생성자에

autoclose_tab(0)

3. 버그?

3.1. (해결됨) Firefox 창이 둘 이상 있을 때 사용이 끝난 탭을 닫을 수 없는 문제

[RT #84418]에서 리포트. 0.72 버전에서 해결되었음.

4. MozRepl 부가 기능 필요

이 모듈을 쓰려면 먼저 firefox 에 mozrepl 확장 기능이 있어야 한다. 이걸 설치하면 4242 포트에 접속해서 파이어폭스를 제어할 수 있게 된다.

설치 후에 도구->MozRepl->Start를 해서 실행을 해줘야 한다.

4.1. Firefox 20.0 에서 동작하지 않는 문제

그런데 이 mozrepl 1.0 버전이 Firefox 20.0 에서 동작하지 않는다. start가 되지 않음.

firefox를 구버전으로 강제로 다운그레이드할 수도 있겠지만... 이 모듈 github에 갔더니 누가 이미 패치를 올려놨더라.

따라서 저걸 직접 적용해서 설치해줘야 한다.

Upload:firefox_addon.png

5. Comments

근데 git으로 mozrepl 저장소를 받아온 상태였다면, 저 패치만 쓱 가져와서 merge하려면 어떻게 해야 하나...
-- Raymundo 2013-4-4 1:17 pm

$ git remote add milouse git@github.com:milouse/mozrepl.git
$ git fetch milouse
$ git checkout -b milouse-patch
$ git cherry-pick 3504aa5b45f4b438bc0e7ef53019558c4bd8bc1c

master가 변경되었는데 동일 파일 동일 라인과 관련 문제가 있어 자동 merge가 안된다면 그때는 conflict는 감수하고 손머지하셔야합니다. :-)
-- keedi 2013-4-4 4:58 pm

아하, 저 패치 제작자의 브랜치를 가져와야 하는 거군요. 감사합니다.
-- Raymundo 2013-4-4 5:08 pm
이름:  
Homepage:
내용:
 

컴퓨터분류

마지막 편집일: 2013-4-13 12:44 pm (변경사항 [d])
1514 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기