블로그 이미지
JEEN

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

Rss feed Tistory
IT 2010.04.05 19:32

[ Chrome => Firefox ] 결국 남자는 항구(?)로 돌아와야 하나...

  작년에 Mac 용 Google Chrome 에 dev channel 로 크롬 플러그인을 사용할 수 있었던 것을 알고 나서는 곧장

   "Firefox Sucks!!!"

  를 외치고 Google Chrome 으로 옮겼습니다. 물론 '주소창에서 한글 입력이 이상하다' 라든가 하는 자잘한 문제는 신경쓰지 않기로 했습니다. Firebug Lite 도 있다니까 개발용으로 써도 되겠네 하면서 싱글벙글 했습니다.

  그렇게 사용하다가 요근래 자주 멈추고, Delicious 플러그인도 참 바보같고(=정식버전은 dev channel 에서 제대로 동작도 안하는)... 그걸 참고 참다가 최근에 다시 Firefox 로 돌아왔습니다. 몇몇 분들이 3.6 이후에는 꽤 안정되었다길래 귀가 혹 했기도 했고... 생각만큼 Google Chrome 업뎃도 빈번하지 않았습니다.

  일단 Firefox 3.6.3 으로 업데이트.
  페르소나를 설정하라고 하길래.. 이건 뭔 잔재미냐 싶어서 냉큼 설정해봤습니다.

  아무튼 체감속도는 Chrome 에 비해서 약간 느린 감이 없지 않아 있지만... 크게 신경쓰일 정도는 아니고...(=라고 뇌내최면중)

  아무튼 바람핀 남편은 결국 마누라에게 돌아오는 게 아닌가 생각해봅니다(별 상관없나;;;)
신고
IT 2008.12.09 15:07

[ Firefox, Selenium ] 그림파일은 읽지 않게 해줘요.

  난관에 봉착하고 그 난관을 넘어섰을 때 어떤 짜릿함을 느낀다고 할까요. 끙끙 앓으면서 문제를 해결했을 때의 그 참맛이라고 할까요.
 
  Selenium 을 Mechanize 로 대신 쓰는 이유는 Mechanize 자체는 Java script 를 해석할 수 없기 때문이라고 했습니다. Selenium 자체는 브라우저에 의존하기 때문에 브라우저에서 JS 로 컨트롤할 수 있는 부분은 거의 모든 부분을 컨트롤 할 수 있죠.
 하지만 그만큼 쓸데없는 연결이 발생하게 마련입니다. 처리하는 중에 쓸데없이 그림 파일을 읽을 필요도 없거니와, 그거 읽는 데 소비할 시간이 아깝다는 것이죠.

그림1. Firefox 환경설정 - 내용


 물론 Firefox 설정화면에서 위의 "그림 자동으로 읽기"의 체크를 해제하면 그림은 읽지 않게 할 수 있습니다. 하지만 Selenium 은 매번 실행시에 임시 profile 을 만들고 그것을 사용하기 때문에 기존 브라우저 설정을 그대로 적용할 수는 없습니다.

2008/11/19 - [IT] - [ Selenium ] Selenium RC 를 사용해보자. II

 위의 포스트에서도 소개했듯이, 그럴때는 Selenium 의 독자적인 profile 을 준비해야합니다.  임시 profile 을 생성할 시에 이 profile 을 우선적용하는 것이지요. 그럼 "그림 자동으로 읽기"에 관한 설정 정보는 어떤 것일 까요?


  URL 입력창에 about:config 로 들어가서 image 라는 설정이름을 가진 것들 중에 그럴 듯한 것을 훑어봤습니다. 그리고 설정화면에서 "그림 자동으로 읽기"를 해제하면 permissions.default.image 가 2로 바뀌죠.
  그럼 이것을 user preference java script 에 추가합니다.

  user_pref("permissions.default.image", 2);


  하지만 문제가 생겼습니다. 대상이 되는 서비스는 img 태그에 그림만을 지정한 것이 아니라 어떤 백그라운드 처리를 위해서 몇가지 img 태그에 그림파일이 아닌 url 이 적혀 있었던 것이었습니다. 다행히 그림용 URL 과는 달리 이런 URL 은 domain 이름부터가 달랐습니다.
  이 경우는 <그림 1>의 "그림 자동으로 읽기" 의 "예외목록..." 버튼을 누르면 설정이 가능합니다.
하지만 이 설정의 경우에는 about:config 에서 아무리 찾아봐도 등장하지 않았습니다. 그래서 찾아본 결과, Firefox 의 Profile Folder 의 Hostperm.1 파일에서 관리하고 있다고 합니다. 아래의 URL 을 참고해주세요.

  Profile Folder : http://kb.mozillazine.org/Profile_folder
  Hostperm.1   : http://kb.mozillazine.org/Hostperm.1

  하지만 profile folder 를 뒤져봐도 hostperm.1 이라는 파일은 어디에 있는 지 안보입니다. 다시 찾아본 결과 이에 대한 설정은 profile folder 의 permissions.sqlite 에서 관리하고 있다고 합니다. 일반 텍스트 파일도 아니고 SQLite 라니... 일단 이 파일을 Selenium 의 Firefox Profile 디렉토리에 복사하고 내용을 보도록 하겠습니다.

  sqlite3 permissions.sqlite

  해서 내용을 보면, permissions.sqlite DB 에는 moz_hosts 라는 테이블 하나 뿐입니다. 테이블 구성은 id, host, type, permission 이 있는데요. 위의 Hostperm.1 을 참고해서 다음처럼 등록했습니다.

  INSERT INTO moz_hosts VALUES(1, 'image.blahblah.net', 'image', 2);
  INSERT INTO moz_hoss VALUES(1, 'image2.blahblah.net', 'image', 2);
 
  그리고 Selenium 을 돌려서 해당 사이트에서 확인한 결과 image.blahblah.net 과 image2.blahblah.net 이라는 도메인을 가진 그림파일은 읽어오지 않게 되었습니다.
  그림 파일을 읽어오지 않으니, Selenium 으로 하는 작업 시간도 어느정도 단축할 수 있습니다. 특별히 그림을 판독하는 기능도 없거니와, 그림이 이건지 저건지 알 필요도 없으니까요.

  여기서 대전제를 먼저 쓰는 것을 잊어버렸는데요. Selenium 은 disk cache 를 사용할 수 없습니다. cache 를 사용할 수 있다면 여러번의 작업시 매번 똑같은 사이트를 들락날락 거리는 데 이미지를 매번 읽을 필요는 없겠죠. 하지만 memory cache 는 사용할 수 있습니다. 한번의 작업에 같은 사이트를 들락날락 거릴때는 cache 를 사용할 수 있죠. 하지만 작업이 끝나면 그 cache 는 지워져버리지만요.

  Selenium 을 통해서 Firefox 의 세세한 부분까지 알게되니(라고 쓰고 '알아야 한다니' 라고 읽습니다) .. 참...
  아무튼 사실 Selenium의 이야기를 가장한 Firefox 의 이야기였습니다.
신고
IT 2008.11.18 11:16

[ Selenium ] 웹서비스 테스트 자동화와는 별 상관없는 작업을 위해...


  Selenium 은 이미 2년전 쯤에 한번 크게 주목받은 웹 테스트 자동화 툴입니다. 요즘도 몇몇 군데에서는 사용하고  있는 곳도 있는데... 제 주위의 개발자들 사이에서는 "이름만 들어봤다" 정도더군요.

** 추기
** 야후에서는 Selenium 으로 테스트 많이 한다더군요.(salelinux 님 曰)
** 사실 Google Video 에서 Selenium 검색해도 많은 강의가 나와있기도 합니다.

  사실 이번에 이 Selenium 을 사용하게 된 계기는 웹 테스트 자동화 라는 타이틀과는 전혀 별개의 동작을 위해서입니다. Test 가 목적이 아니라, 실제로 작업을 수행하는 Agent 의 기능에 주목을 한 것이죠.

  그럴려면 WWW::Mechanize 같은 것으로도 충분하지 않느냐? 라고 하시기도 하실테지만... WWW::Mechanize 같은 경우에는 JavaScript 동작에서는 어떻게 할 수 없다는 단점이 있어서 입니다.

  아무튼 오늘은 간단하게 Selenium IDE 만을 사용해보았습니다. Selenium IDE 란, Firefox 의 확장 플러그인으로 제공되며, 위에서 언급한 웹 테스트를 위한 툴입니다.

- http://release.openqa.org/selenium-ide/1.0-beta-2/selenium-ide-1.0-beta-2.xpi

  위의 URL 에서 확장 플러그인을 인스톨하고, FF 를 재기동합니다.(IE도 있지만, 제 환경 상 FF 기준으로 가겠습니다.)

  그리고 [도구] - [ Selenium IDE ] 를 실행하면 아래와 같은 화면이 나옵니다.

  뭐, 자세한 튜토리얼은...

  - http://wiki.seleniumhq.org/download/attachments/400/Selenium+IDE.swf?version=1

  이것을 보고 대강 이해했습니다. 작업을 녹화해서 간편하게 커맨드와 타입/값을 지정하고, 녹화한 작업을 다시한번 수행할 수 있습니다. 이렇게 만든 작업은 HTML 로 Export 가 가능하구요(HTML 이 Selenium 포맷인 듯...).
일단 처음 사용해보고는 이것저것 가능할 것 같다라고 생각하고 있습니다.

  일단은 그래서 Selenium IDE 로 "사내 스케쥴 관리" 서비스에서 작동 테스트를 해봤습니다. 위의 값들은 레코딩하면서 얻어낸 값이구요. 레코딩이 끝나고 재생을 시키면 레코딩한 순서대로 작업이 진행되고, 어떤 커맨드들로 그 값이 존재하느냐 라는 등등의 테스트 판정을 할 수 있었습니다. 작업분기는 어떻게 처리되는 지 모르겠군요. 안되는 듯 합니다만...

  ** 추기
  ** Selenium IDE 가 화면의 전환을 기다려주지 않고 혼자서 움직이면서 Element 를 못 찾겠느니 하는 얘기를 할 때가 있습니다. 그럴때는 command 를 click => clickAndwait 로 바꿔서 조금씩 기다려주면 되더군요. 참고하시기 바랍니다.

  Selenium-RC 라는 것을 사용해서 원격에서 클라이언트를 통해서 컨트롤이 가능하다고도 하네요.
  (.NET, JAVA, PHP, Perl 등을 지원한다고 하네요. 전 Perl 이 중요하니... 그걸로 되었다고 생각...;)
  이런 언어들을 사용해서 보다 자세한 작업 분기 및 여러가지 활용방안이 생겨나겠죠.

  아무튼 웹서비스 테스트와는 전혀 관계없이, 순전히 Agent 로 사용하는 목적은 복수의 웹서비스에서의 주문관련 처리를 한 곳에서 관리하기 위해 Agent로 사용하는 것입니다. 얼마만큼 생각대로 움직여 줄지, 혹은 제가 움직일 수 있을 지 아직은 모르겠지만...  뭐 어떻게든 되겠죠 뭐.
신고
TOTAL 462,386 TODAY 13

티스토리 툴바