블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT 2008.11.18 13:24

[ Selenium ] Selenium RC 를 사용해보자. I

    Selenium IDE 를 통해서 레코딩이 끝나고, 동작확인이 되었으니, Selenium RC 를 사용해서 한번 작업해보았습니다.

  - http://selenium-rc.seleniumhq.org/

  이 페이지에서 Selenium RC 를 다운로드 할 수 있고, Selenium RC 는 Java Runtime Environment 를 필요로 합니다. 그리고 클라이언트는 "Perl" 을 사용하기로 하고... cpan 에서 다운로드 하거나... Selenium RC 파일을 압축해제 하면.. 안에 각 클라이언트 별로 라이브러리가 있으니... 그곳에서 인스톨해도 상관은 없습니다.
 

  ( 이렇게해서 Selenium IDE 에서 Perl 코드를 Export 할 수 있습니다~ )

Selenium Server 는 회사의 콘솔을 사용하고... Client 는 제 MacBook 입니다.

일단은 서버에서 selenium-server.jar 을 실행해서 selenium 서버를 띄웁니다.

$ java -jar selenium-server.jar

*** 여기서 문제가 있는데요. 현재 위의 Selenium RC 링크에서 다운받을 수 있는 03/05/2008 릴리즈의 Version 1.0 beta 1 에서는 Firefox3 를 실행할 수 없다는 점입니다.
  (Server Debug 메시지에서 Preparing Firefox profile 이라고 나오면서... 막상 브라우저는 안뜨더군요..)
  그래서 해외의 어느 개발자가 이것을 패치해서 배포하고 있으니... Firefox 3 를 쓰신다면 이것을 사용해보시는 것이 좋을 것 같습니다.

  - http://notetodogself.blogspot.com/2008/10/use-selenium-rc-in-firefox-3.html

아래는 Selenium IDE 로 Export 한 Perl Code 입니다.
  1. use strict;
  2. use warnings;
  3. use Time::HiRes qw(sleep);
  4. use Test::WWW::Selenium;
  5. use Test::More "no_plan";
  6. use Test::Exception;
  7.  
  8. my $sel = Test::WWW::Selenium->new( host => "192.168.*.*",
  9.                                    port => 4444,
  10.                                    browser => "*firefox /usr/lib/firefox-3.0.3/firefox",
  11.                                    browser_url => "https://***.***.**/" );
  12.  
  13. $sel->open_ok("/i/dnet.cgi");
  14. $sel->type_ok("UserID", "leejj");
  15. $sel->type_ok("_word", "****");
  16. $sel->click_ok("s_login");
  17. $sel->wait_for_page_to_load_ok("30000");
  18. $sel->click_ok("//tr[2]/td[1]/a/img");
  19. $sel->wait_for_page_to_load_ok("30000");
  20. $sel->type_ok("Detail", "Selenium Test");
  21. $sel->click_ok("s_ok");
  22. $sel->wait_for_page_to_load_ok("30000");
  23. $sel->click_ok("xlogout");
  24. $sel->wait_for_page_to_load_ok("30000");

위의 인수로 browser 를 지정할 때는 Client 에서 Full Path 로 지정하거나, Server 에서 firefox-bin 을 PATH 에 지정해줄 필요가 있습니다. 저는 전자의 방법으로 했습니다.
 
  그리고 Client 에서 스크립트를 실행합니다. 그러면 Server Debug 메시지가 좌르르륵 나오면서 Firefox 가 뜨고, 이것저것 움직.... 이지않고 SSL 인증 실패가 나오더군요. 그냥 기간만료된 SSL 을 사용하고 있는 사내 서비스를 대상으로 해서 그런지 모르겠지만;;

** 추기
** 이건 selenium-server 를 띄울 때 -trustAllSSLCertificates 라는 옵션을 추가해주니 무사히 통과되었습니다.

$ java -jar selenium-server.jar -trustAllSSLCertificates

** 하지만 브라우저의 SSL 오류 페이지는 나오죠. 이건 아마 브라우져 설정으로 어떻게 넘어갈 수 있지 않을까 생각합니다. Firefox 라면 about:config 에서 어떻게 만진다든지...

 그래서 Google 에서 간단하게 리코딩하고 소스코드 Export 해서 다시 실행시켜봤는데... server 쪽에서는 Firefox 가 뜨고는 뭔가 작업이 이루어졌는 것 같은데... Firefox 가 꺼지고 결과를 보니 Selenium Failure 라고 나오는 군요.
  (Permission denied to get property Window.seleniumMarker1229881835434 on session xxxxxxx)

** 추기
** 이건 Cross-domain 에 관한 이슈였습니다. 검색해보니까 바로 답이 나오네요.
** Client 의 browser 를 *firefox 에서 *chrome 으로 바꿔줍니다.
** 그러면 ...

$ perl google-selenium.pl
ok 1 - open, /
ok 2 - type, q, Seoul.pm
ok 3 - click, btnG
1..3

 이렇게 테스트는 통과하게 됩니다.
 *chrome 이라고 해서 구글의 크롬인가 했는데... 그건 아닌가 봅니다. 이에 대해서는 조금 더 조사해볼 필요가 있겠네요.

* 이번에는 작업을 진행하면서 순간순간 블로그에 기록해두는 식으로 적어봤습니다. 이쪽이 좀 더 효율이 있네요. 앞으로는 이렇게 써나가도록 노력해보겠습니다.
신고
TOTAL 470,619 TODAY 75

티스토리 툴바