
ãªãœãŒã¹habrahabr.ruã®èŠªæãªã蚪åè ïŒ ãã¹ãèªååãšã³ãžãã¢ã®Jeremy Suarezã«ããèšäºã玹ä»ããŸãã Rubyããã³WATIRèšèªã䜿çšããŠãããžã§ã¯ãã®èªåãã¹ããæŽçããäºå®ãããå Žåã¯ããã®èšäºã圹ç«ã¡ãŸãã Jeremyã¯ãåºæ¬çãªäŸã䜿çšããŠããã¹ãŠãç°¡åãªèšèªã§èª¬æããŸãã èšäºãèªãã åŸãããã»ã¹ã®æåã®ã¹ãããããæçµæ®µéãŸã§ãããã»ã¹ãæ確ã«ç解ã§ããŸãã
è³æã«çŽæ¥é²ãåã«ãèè ã«ããã€ãã®èšèãæ§ããããšæããŸãã ãžã§ã¬ããŒã¯ãã¹ãã§è±å¯ãªçµéšãæã£ãŠããŸãã 圌ã®å€ãã®ãããžã§ã¯ãã§ãéçºè ãããã¹ã¿ãŒããããžã§ã¯ããããŒãžã£ãŒãŸã§ãããŸããŸãªåœ¹å²ãæãããŸããã çŸåšãThoughtWorksã§åããŠããŸãã
ããã§ã¯å§ããŸãããïŒ
察象èªè
ãã®è³æã¯ãäž»ã«èªååããããã¹ãã¹ã¯ãªããã®äœæãèšç»ããŠãããã¹ããšã³ãžãã¢ããŸãã¯æ¢è£œã®ãã¬ãŒã ã¯ãŒã¯ããµããŒãããäºå®ã®ãããšã³ãžãã¢ã«åœ¹ç«ã¡ãŸãã èªè ã¯Rubyæ§æã®åºæ¬çãªç¥èãæã¡ãWebã¢ããªã±ãŒã·ã§ã³éçºã®åºæ¬ååã«ç²ŸéããŠããããšãåæãšããŠããŸãïŒããªã³ã¯ããããã©ãŒã ãããJavaScriptããªã©ã®çšèªã¯ãããã¯æ»æãåŒãèµ·ãããŸããïŒã
Rubyã¯æ¯èŒçåŠç¿ããããèšèªã§ãã PythonãC ++ãJavaããŸãã¯Cã§ã³ãŒããèšè¿°ããçµéšãããå Žåã¯ãããã«ç¿åŸã§ããŸãã
åææ¡ä»¶ãšå¶é
Webã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã«WATIRã䜿çšããããã®åææ¡ä»¶ã®äžéšã以äžã«ç€ºããŸãã ããããäž»ãªãã®ã¯ãã¢ãžã¥ãŒã«ãIE 5.5以äžã§ã®ã¿åäœããããšã§ãã æ®å¿µãªãããNetscapeãOperaãFirefoxããŸãã¯ãã®ä»ã®ãã©ãŠã¶ãŒã§åäœããããã«ã¯èšèšãããŠããŸããã ããã¯ãWATIRã䜿çšããã¯ãã¹ãã©ãŠã¶ãã¹ããäžå¯èœã§ããããšãæå³ããŸãã 2çªç®ã®éèŠãªè©³çŽ°ã¯ãWATIRã«ã¯ç¬èªã®ã¬ã³ãŒããŒããªãããšã§ãã æŠããŠãWATIRã¯ãã¹ã¯ãªãããæåã§èšè¿°ãããšãã«äœ¿çšã§ããIEã¡ãœãããšãªããžã§ã¯ãã®ã©ã€ãã©ãªã§ãã æåŸã«ã3ã€ç®-WATIRã«ã¯ãããŒãžã«ãããªããžã§ã¯ããããã³ãã®ã¿ã€ããšäœ¿çšå¯èœãªã¡ãœãããèå¥ããæ段ããããŸããã ãã¹ãŠã®ãªã³ã¯ãç»åããã©ãŒã ãªã©ãåéããæ¹æ³ãæäŸããŸãã ãããã£ãŠãã¹ã¯ãªããéçºããã»ã¹ã¯ãè©Šè¡é¯èª€ã®æ¹æ³ã«åŸãããšããããããŸãããå¶ç¶ãå¿ ãããæªãããã§ã¯ãããŸããã
æºåãã
èªååããããã¹ãã¹ã¯ãªãããèšè¿°ããããã»ã¹ã®åã«ãæºåããã»ã¹ãå¿ èŠã§ãã ãã®å Žåã®æãéèŠãªç¹ã¯ãããããããã¹ãŠã®èªåãã¹ããå®éã«ã¯æ¢è£œã®æåãã¹ãã¹ã¯ãªããããè«ççã«åŸãããšã§ãã ãã¹ããã¬ãŒã ã¯ãŒã¯ãéçºããããã®åªåã®ã»ãšãã©ã¯ã誀ã£ãŠèšè¿°ãããæåãã¹ãã®ããã«ç¡é§ã«ãªããŸãã ç解ããããšãéèŠã§ã-ããã¯ãæåãã¹ããšèªåãã¹ãã®äž¡æ¹ãããã«ãµããŒãããããã®äž»èŠãªãã€ã³ãã§ãã ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠå®è£ ãããããžãã¹ããã»ã¹ã®çžäºäœçšã®å šäœåã確èªããã¿ã¹ã¯ã®ç¯å²å šäœãã«ããŒãã説æã«ã¢ãããŒãããå¿ èŠããããŸãã
ãã¹ã察象ã®ã¢ããªã±ãŒã·ã§ã³ã®è©³çŽ°ãç解ãã
æ©èœèŠä»¶ã®ã³ã¬ã¯ã·ã§ã³ïŒããå ŽåïŒ
æåãŸãã¯èªåãã¹ãã®èšèšã«çŽæ¥é²ãåã«ãã¢ããªã±ãŒã·ã§ã³ãäœã§ããããç解ããå¿ èŠããããŸãã æãç°¡åãªæ¹æ³ã¯ãéçºèŠä»¶ã«æ £ããããšã§ãã çŸåšãèŠä»¶ã®ææžåã¯ã»ãŒæ®éçã§ãã ãããŠãæ確ã§å®å šãã€äžè²«ããèŠä»¶ãæ確ã«ããå Žåãããã¯è¯ãåºçºç¹ã§ãã
å°é家ã®èª¿æ»
æ©èœèŠä»¶ã®èª¿æ»ã«å ããŠãããã§ãªãå Žåã¯ã補åã®éçºè ãšãšã³ããŠãŒã¶ãŒããæ å ±ãçŽæ¥ååŸã§ããŸãã éåžžã建ç¯å®¶ãããžãã¹ã¢ããªã¹ããªã©ããã®ããã»ã¹ã«åå ã§ããŸãã éçºè ã¯éåžžãã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«æ©èœãããã«ã€ããŠç¬èªã®ã¢ã€ãã¢ãæã£ãŠãããããã§ããã ãå€ãã®ç°ãªãåéã®å°é家ããã£ã¹ã«ãã·ã§ã³ã«åå ããããšãéèŠã§ãã ãããŠãååãšããŠã圌ãã®èŠç¹ã¯ã¯ã©ã€ã¢ã³ãã®æåŸ ãšã¯ç°ãªããŸãã
ãã¹ãã±ãŒã¹ã«ããããžãã¹ããã»ã¹ã®ãã¬ãŒã³ããŒã·ã§ã³
ãã¹ãŠã®ãã¹ãã¢ã¯ãã£ããã£ã¯ãæåãŸãã¯èªåã«ãããããã詳现ãªã¹ããããã€ã¹ãããã®ãã¹ãã·ããªãªã«åºã¥ããŠããå¿ èŠããããŸãã ããããªããšããã¹ãã®é²æç¶æ³ãã³ãŒãã«ãã¬ããžã®å²åãããã³ãã®ä»ã®ã¡ããªãã¯ã远跡ããããšãåé¡ã«ãªããŸãã èªåãã¹ããç¬èªã®ããã¥ã¡ã³ãã§ãããšèããã®ã¯ééã£ãŠããŸãã 圌ãã¯çµ¶ããå€åããç·šéãããŠããŸãã ãã®ãããªã¢ãããŒãã¯ãå€å€§ãªæéã³ã¹ããšãšã©ãŒã®å¢å ã«ã€ãªãããŸãã
ããŒã¿æºåããã»ã¹ã®äœæ
å€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãäœæ¥äžã«ããŒã¿ã䜿çšãŸãã¯äœæããŸãã æåãšèªåã®äž¡æ¹ã®ãã¹ãç®çã§ãã·ã¹ãã å ã®ããŒã¿ã®ç¶æ ã¯ãµã€ã¯ã«ããšã«åãã§ãªããã°ãªããŸããã ãã®ç¹å®ã®ã±ãŒã¹ã§ããã°ã©ã ãäœããã¹ããã«ãã£ãŠãåéãäœæããŸãã¯ãã®äž¡æ¹ã®ããã«ãããŒã¿æºåã¹ã¯ãªãããšã¯ãªãŒãã³ã°ã¹ã¯ãªãããæºåããå¿ èŠããããŸãã ããŒã¿ã®æºåãšç²Ÿè£œã®ããã®ãã¹ãã¯ãéåžžã®ã¹ã¯ãªãããšåæ§ã«çºè¡ããåŸè ã®åææ¡ä»¶ãšããŠäœ¿çšããå¿ èŠããããŸãã
èªååã«é©ããã±ãŒã¹ãç¹å®ãã
æåãªåºåã¹ããŒã¬ã³ã«ããããã«ãããã¹ãŠã®ãšãŒã°ã«ããåãããã«åœ¹ç«ã€ããã§ã¯ãããŸãããã åãããšããã¹ãã±ãŒã¹ã«ãåœãŠã¯ãŸããŸãã ãã¹ãŠãèªååããå¿ èŠã¯ãããŸããã æãåçŽã§ãæãé »ç¹ã«ç¹°ãè¿ããããã®ã ããè¯ãåè£ã§ãã UIã§æ©èœããã±ãŒã¹ããå§ããŠãããŒã¿ãäœæããã³åé€ããå¿ èŠã®ããã±ãŒã¹ã«æ³šæãæã£ãŠãã ããã æåŸã«ãæãéèŠãªæ©èœã»ã°ã¡ã³ãïŒæãäžè¬çã«äœ¿çšãããæ©èœïŒãã«ããŒããäžé£ã®ã¹ã¯ãªãããäœæããŠã¿ãŠãã ããã
èªååãããã¹ã¯ãªãããã¬ãŒã ã¯ãŒã¯ã®äœæ
æ£ç¢ºã«ãã¹ãããå¿ èŠããããã®ã®æ確ãªããžã§ã³ãåŸãããããå¿ èŠãªæ©èœãã¹ããããã€ã¹ãããã®ã±ãŒã¹ãšããŠææžåããåŸãèªåãã¹ãã¹ã¯ãªããèªäœã®éçºãå®å šã«éå§ã§ããŸãã æåãã¹ãã±ãŒã¹ã空ã®Rubyã¹ã¯ãªãããã¡ã€ã«ã«ã³ããŒããŸãã ã¹ã¯ãªããå ã®ã¹ããããã³ã¡ã³ãåããå¥ã ã®ã»ã¯ã·ã§ã³ã«åå²ããŸãã åå²ããå Žåãããå Žæã§ããŒã¿ãäœæããå¥ã®å Žæã§äœ¿çšãããšããååã«åŸãããšãã§ããŸãã ã¹ã¯ãªããã®äœæ¥äžã«ããŒã¿ãçæãããããäœããã®çç±ã§ã±ãŒã¹èªäœãæåŸã«å°éããªãã£ãå Žåããã®ããŒã¿ãåé€ããŠã¹ã¯ãªããã埩å ããããšããæ¹ãåççã§ãã
å®è£
äžè¬ã«ãRubyãšWATIRã䜿çšãããã¹ãã¹ã¯ãªããèªååããã»ã¹ã®å®è£ ã¯ãããã€ãã®ç°¡åãªæé ã«ãªããŸãã
â¢ãã¹ãã±ãŒã¹ãéžæãããäžé£ã®æ©èœã䜿çšããŠããã°ã©ã ã§ããŸãã
â¢IEãªããžã§ã¯ãã®åæåãŸãã¯æ¢åã®ãã©ãŠã¶ãŒãŠã£ã³ããŠãžã®æ¥ç¶
â¢ã¢ããªã±ãŒã·ã§ã³ã®éå§ãªã³ã¯ã«ç§»åããŸã
â¢ãããªãã¢ã¯ã·ã§ã³ã«å¿ èŠãªãã¹ãŠã®ãªã³ã¯ãç»åããã©ãŒã ã®åé
â¢åéãããæ å ±ããªã³ã¯ã®ååããã©ãŒã ã«é¢ããæ å ±ãç»åã®ååãªã©ãã
â¢ãªã³ã¯ããã©ãŒã ãç»åã§ã¢ã¯ã·ã§ã³ãå®è¡ãã
â¢å¿ èŠã«ãªããŸã§æé 3ã6ãç¹°ãè¿ããŸãã åã¹ãããã®æåŸã«ãå®è¡ãããã¢ã¯ã·ã§ã³ãæ£åžžã«çµäºããããšã確èªããå¿ èŠããããŸãã
æ倧ã®å¹çãéæããã«ã¯ãåã¹ãããã«æ€èšŒã䌎ãããšãéåžžã«éèŠã§ãã ãã®ãããªãã§ãã¯ãå®è¡ãããªãå Žå-å¯èœ-ã¹ã¯ãªãŒã³ã·ã§ãããæ®ã£ããããã°ãã³ããŒããããå°ãªããšããããããããšã©ãŒã¡ãã»ãŒãžãçºè¡ãããã§ããŸãã ããããªããšãããªã³ã¯ãèŠã€ãããŸããããŸãã¯ããã©ãŒã xxxãå©çšã§ããŸããããªã©ã®ãªã¹ã¯ãçºçããŸãã
ã¹ã¯ãªããéçºè ã®ã¿ããäœããããŸããããªãã£ãå Žåã«ãšã©ãŒã¡ãã»ãŒãžãã©ã®çšåºŠæçã§ãããã«äŸåããŸãã äœå質ã®ã¹ã¯ãªãããæåã§å®è¡ããŠãäœãèµ·ãã£ãã®ããç解ããå¿ èŠããããŸããæ£ããã³ã³ãã€ã«ãããã¹ã¯ãªããã¯ãé害èªäœã«é¢ãããã¹ãŠã®å¿ èŠãªæ å ±ãçæã§ããŸãã
å®è£ ã®æè¡çåŽé¢
IEãªããžã§ã¯ãã®åæå
æ°ãããã©ãŠã¶ãŒIEãªããžã§ã¯ããäœæããããæ¢åã®IEãªããžã§ã¯ãã«æ¥ç¶ããããšããå§ããŸãã
$ ie = IE.newïŒïŒ
ãŸãã¯
$ ie = IE.attachïŒïŒtitleãâ ...âïŒ
éå§ãªã³ã¯ããã©ã
æå®ããããªã³ã¯ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ããéå§ããŸãã ãã¹ãŠã®ã±ãŒã¹ã¯ããã§å§ãŸããŸãã ãŸããã¹ã¯ãªããèªäœã®å®è¡äžã«ãªã³ã¯ããã©ãå¿ èŠãããå ŽåããããŸãã
$ ie.gotoïŒâ httpïŒ// ....âïŒ
ã³ã³ãã³ãæ€èšŒ
ã³ã³ãã³ãã確èªããæãç°¡åãªæ¹æ³ã¯ãassertã³ãã³ãã䜿çšããããšã§ãã ãã©ãŒã ãååšããããšããã¿ã³ã䜿çšå¯èœã§ããããšãããŒãžã«ããã¹ããå«ãŸããŠããããšãªã©ã確èªããŠãã ãããRubyã«ã¯TRYã«ãŒãããªããããrescueããŒã¯ãŒãã䜿çšããŸãã
å§ãã
assertïŒ$ ie.pageContainsTextïŒããã°ã¢ãŠãæåãïŒïŒ
assertïŒ$ ie.formïŒïŒnameãâ LoginâïŒãexistsïŒ
$ log.infoïŒããã¹ãã¹ããã5ã«åæ ŒããŸããïŒãïŒ
æå©
$ log.errorïŒããã¹ãã¹ããã5ã«å€±æããŸãããïŒ
$ log.infoïŒããšã©ãŒããã¹ãã¯ïŒããã€ãŸã.textïŒïŒïŒ
çµãã
å¿ èŠãªãªã³ã¯ãç»åããã©ãŒã ã®ã³ã¬ã¯ã·ã§ã³
ã¹ã¯ãªãããèšè¿°ããéçšã§ããªã³ã¯ãŸãã¯ç»åã®æ£ç¢ºãªååãURL圢åŒããã£ãŒã«ãåãªã©ã決å®ããããšã¯å¿ ããã容æã§ã¯ãããŸããã ãã®ãããªå Žåããã³ãããã°ãã¡ã€ã«ãŸãã¯ç»é¢ã«ã¢ããããŒãã§ããŸãã ãã®æ å ±ã¯ããã¹ãã®äœææãŸãã¯ãããã°æã«åœ¹ç«ã¡ãŸãããã±ãŒã¹ã®æçµããŒãžã§ã³ã§ã¯ç¡å¹ã«ããå¿ èŠããããŸãã åºåã¯ããã¡ã€ã«ããã³æšæºåºåããã€ã¹ã«ãåºåã§ããŸãã
$ log.infoïŒïŒã$ log.errorïŒïŒã$ log.warningïŒïŒlog4jãã°ãã¡ã€ã«ãžã®ãã¹ãŠã®åºåã
ãã¹ãŠã®ãªã³ã¯ã衚瀺ïŒ
puts $ ie.show_linksïŒïŒ
ãã¹ãŠã®ãã©ãŒã ã衚瀺ïŒ
puts $ ie.show_formsïŒïŒ
ãã¹ãŠã®ç»åã衚瀺ïŒ
puts $ ie.show_imagesïŒïŒ
ãã¹ãŠã®ãªããžã§ã¯ãã衚瀺ïŒ
puts $ ie.show_all_objectsïŒïŒ
ãã¹ãŠã®ãã¬ãŒã ãå«ãããŒãžå šäœã衚瀺ããŸãã
puts $ ie.htmlïŒïŒ
ãªã³ã¯ãã¯ãªãã¯ããŠãã ãã
ãªã³ã¯ã®ã¢ã¯ãã£ãåã¯ãååãŸãã¯çŽæ¥URLã䜿çšããŠå®è¡ã§ããŸãã JavaScriptã䜿çšããå Žåããªã³ã¯ã¯URLã«ãã£ãŠã®ã¿ã¢ã¯ãã£ãåã§ããŸãããªã³ã¯ãç»åãªã³ã¯ã®å Žåã¯ããã®ã€ã¡ãŒãžã¿ã°ïŒsrcãimageã¿ã°ïŒã«ãã£ãŠã¢ã¯ãã£ãåã§ããŸãã ã¯ãªãã¯æ¹åŒã¯ããªã³ã¯ãã¢ã¯ãã£ãã«ããããã®æšæºã®WATIRæ¹åŒã®1ã€ã§ãã
$ ie.linkïŒïŒtextãâ PortfolioâïŒãã¯ãªãã¯
ãªã³ã¯ããã¹ããæéãšãšãã«å€åããå¯èœæ§ããããããã®å Žæã¯å€ãããªãå Žåããªã³ã¯ã€ã³ããã¯ã¹ã䜿çšããæ¹ãå®å šã§ãïŒããŸããŸãªãªã³ã¯ã®ã€ã³ããã¯ã¹ãæ€çŽ¢ããã«ã¯ã$ ie.show_linksïŒïŒã䜿çšããŸãïŒã
$ ie.linkïŒïŒã€ã³ããã¯ã¹ã20ïŒ.click
JavaScriptã䜿çšããå ŽåãURLïŒãŸãã¯hrefã¿ã°ïŒã䜿çšã§ããŸãã
$ ie.linkïŒïŒurlã/ javascriptïŒdeleteClient \ïŒ\ d ,. * /ïŒãã¯ãªãã¯
URLã¯ãšã³ã³ãŒãããå¿ èŠãããããšã«æ³šæããŠãã ããïŒã¹ããŒã¹ã¯ïŒ 20ãªã©ã§è¡šãããŸãïŒã äžèšã®äŸã®ããã«ãæ£èŠè¡šçŸã䜿çšã§ããŸãã
ç»åãã¯ãªãã¯
è¿œå ã®ã¿ã°scrããã³altãååšããããšãé€ããŠãç»åãã¯ãªãã¯ããããšã¯ããªã³ã¯ãã¯ãªãã¯ããããšãšå€§å·®ãããŸããã
$ ie.imageïŒïŒnameãâ login.gifâïŒãã¯ãªãã¯
ãã©ãŒã éä¿¡
ãã©ãŒã ãžã®å ¥åãšéä¿¡ã¯ããããããµã€ãããã²ãŒã·ã§ã³æ®µéã§å®äºããã®ãæãé£ããæé ã§ãã ãããè¡ãã«ã¯ããã¹ãŠã®ããã¹ããã£ãŒã«ããéžæãªã¹ãããŸãã¯ãã©ãŒã ã«ååšãããã®ä»ã®èŠçŽ ã®ååãç¥ãå¿ èŠããããŸãã ãããã®ç®çã«ã¯ie.show_all_objectsïŒïŒã䜿çšããŸãã
$ ie.textFieldïŒïŒnameãâ usernameâïŒãsetïŒâ testuserâïŒ
$ ie.textFieldïŒïŒnameãâ passwordâïŒãsetïŒâ testpassâïŒ
éä¿¡ã¯ã察å¿ãããªããžã§ã¯ãããã¯ãªãã¯ãããããšã§å®è¡ãããŸãã
$ ie.buttonïŒïŒvalueãâ LoginâïŒãã¯ãªãã¯
å ±ææœèšã®çããã¢ãŒ
ãããã¢ããã䜿çšãã
ã¢ã¯ã·ã§ã³
æ°èŠãæ»ããé²ããsend_keysãgotoãéãããæŽæ°ãæå°åãæ倧åã埩å
$ ie.backïŒïŒ
$ ie.forwardsïŒïŒ
$ ie.send_keysïŒâ {TAB} {TAB} {ENTER}âïŒ
$ ie.close
$ ie.gotoïŒãhttp://www.google.comãïŒ
$ ie = IE.newïŒïŒ
衚瀺æ©èœ
showFramesãshow_framesãshowFormsãshow_formsãshowImagesãshow_imagesãshowActiveãshow_activeãshowLinksãshow_linksãshowAllObjectsãshow_all_objectsãshow_tablesããã¿ã³ãshow_spansãshow_labels
$ ie.show_tables
$ ie.buttons.each {| m | mã眮ã}
ç¶æ¿ãªããžã§ã¯ã
frameãtextFieldãspanãrowãselectBoxãradioãselect_listãtext_fieldã
ãã§ãã¯ããã¯ã¹ããã¿ã³ããã§ãã¯ããã¯ã¹ããªã³ã¯ãã»ã«ããã©ãŒã ãããŒãã«
$ ie.frameïŒïŒã€ã³ããã¯ã¹ã1ïŒ
$ ie.textFieldïŒïŒnameãâ qâïŒãsetïŒâ TestâïŒ
$ ie.buttonïŒïŒvalueãâ OKâïŒãã¯ãªãã¯
$ ie.linkïŒïŒtextãâ Happy linkâïŒãã¯ãªãã¯
$ ie.select_listïŒïŒnameãâ DayâïŒãselect_valueïŒâ todayâïŒ
ãªããžã§ã¯ããªã¹ã
ãã§ãã¯ããã¯ã¹ãã©ãã«ãç»åãã¹ãã³ãã©ãžãªãselect_listsãtext_fieldsããã¿ã³ãããŒãã«ããªã³ã¯
$ ie.checkboxes.each {| m | mã眮ã}
$ ie.radios.each {| m | mã眮ã}
$ ie.links.each {| m | mã眮ã}
ãã§ãã¯
getTextãtextãgetStatusãstatusãgetHTMLãhtmlãpageContainsTextãcontains_textãtitle
ifïŒ$ ie.text.matchïŒâ HalloâïŒïŒ= nilïŒ
ãåæ ŒïŒã
ä»ã«
ã倱æããŸããïŒã
$ ie.contains_textïŒãGoogleãïŒ
æ»ãå€ïŒTrue
ãã®ä»ã®æ©èœ
getImageãgetIEãenable_spinnerãset_fast_speedãenable_spinner =ãwaitãpopupãdown_load_timeãgetLinkãset_slow_speedãgetTablePartãfocusãurl
ããã¹ããã£ãŒã«ã
説æ
ããã¹ãå=質åID =å€= alt = src =
ãªããžã§ã¯ã
textFieldãtext_field
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_active
$ ie.textfields.each {| textfield | ããã¹ããã£ãŒã«ãã眮ã}
ãã®ä»ã®æ¹æ³
valueãvalue =ãclearãclickãsendãsetãenabledïŒãflashãhtmlãappendãgetContentsãfocusãverify_contains
æã䜿çšãããæ¹æ³
å€ãèšå®ãè¿œå ãverify_containsã
äŸ
$ ie.textFieldïŒïŒnameãâ qâïŒãvalue =â Samâ
$ ie.textFieldïŒïŒnameãâ qâïŒãappendïŒâ I amâïŒ
$ ie.textFieldïŒïŒnameãâ qâïŒãvalue
æ»ãå€ïŒãSam I amã
$ ie.textFieldïŒïŒnameãâ qâïŒãgetContents
æ»ãå€ïŒãSam I amã
$ ie.textFieldïŒïŒnameãâ qâïŒãsetïŒâ HappyâïŒ
$ ie.textFieldïŒïŒnameãâ qâïŒãverify_containsïŒâ appâïŒ
æ»ãå€ïŒtrue
ãã¿ã³
説æ
éä¿¡å= btnG id =å€= Googleæ€çŽ¢alt = src =
ãªããžã§ã¯ã
ãã¿ã³
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_active
$ ie.buttons.each {|ãã¿ã³| ãã¿ã³ã眮ã}
ãã®ä»ã®æ¹æ³
å€ã衚瀺ãã¯ãªãã¯ãéä¿¡ãæå¹ïŒããã©ãã·ã¥ãhtmlãç¡å¹ãããªãŒãºããã©ãŒã«ã¹
æã䜿çšãããæ¹æ³
ã¯ãªãã¯ããŠ
äŸ
$ ie.buttonïŒïŒnameãâ btnGâïŒãã¯ãªãã¯
$ ie.buttonïŒïŒååãâ btnGâïŒå€
æ»ãå€ïŒãGoogleæ€çŽ¢ã
åç §è³æ
説æ
ãname = id = innerText = Business Solutions href = httpïŒ//www.google.com/services/ã
ãªããžã§ã¯ã
ãªã³ã¯
èªèæ¹æ³
$ ie.show_links
$ ie.show_active
$ ie.links.each {| link | ãªã³ã¯ã眮ã}
ãã®ä»ã®æ¹æ³
å€ãã¿ã€ãã«ãã¯ãªãã¯ãlink_has_imageãæå¹ïŒãflashãhtmlãhrefãsrcãtextãfocusãnameãinnerTextãequalïŒ
æã䜿çšãããæ¹æ³
ã¯ãªãã¯ããŠ
äŸ
$ ie.linkïŒïŒããã¹ãããããžãã¹ãœãªã¥ãŒã·ã§ã³ãïŒãã¯ãªãã¯
$ ie.linkïŒïŒtextãâ Business SolutionsâïŒãenabledïŒ
æ»ãå€ïŒtrue
$ ie.linkïŒïŒããã¹ãããããžãã¹ãœãªã¥ãŒã·ã§ã³ãïŒãlink_has_image
æ»ãå€ïŒfalse
åèïŒshow_activeãŸãã¯show_all_objectsã¡ãœããã䜿çšãããŠããå Žåããªã³ã¯ã¯ã¿ã€ããªãã§è¿ãããŸãã
éžæãªã¹ã
説æ
select-one name = logonFormïŒ_idJsp15ïŒ0ïŒè³ªåID = logonFormïŒ_idJsp15ïŒ0ïŒè³ªåå€=ç«ã®ååã¯äœã§ããïŒ
ãªããžã§ã¯ã
select_list
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_active
ãã®ä»ã®æ¹æ³
ãªãã·ã§ã³ãéžæãå€ãgetSelectedItemsãã¯ãªãã¯ãæå¹ïŒããã©ãã·ã¥ãselect_item_in_select_listãhtmlãgetAllContentsãselect_valueãclearSelection
æã䜿çšãããæ¹æ³
selectãgetSelectedItemsãgetAllContentsãselect_valueãclearSelection
äŸ
$ ie.select_listïŒïŒnameã/Question/).value
æ»ãå€ïŒãããªãã®ç«ã®ååã¯ïŒã
$ ie.select_listïŒïŒnameã/Question/).getAllContents
é åãè¿ããŸãïŒ[ã奜ããªè²ã¯äœã§ããïŒãããããªãã®ç«ã®ååã¯äœã§ããïŒã]
$ ie.select_listïŒïŒnameã/Question/).select_valueïŒãããªãã®ç«ã®ååã¯ïŒãïŒ
ãã§ãã¯ããã¯ã¹
説æ
ãã§ãã¯ããã¯ã¹å= option1 id =å€= Milk alt = src =
ãªããžã§ã¯ã
ãã§ãã¯ããã¯ã¹
ãã§ãã¯ããã¯ã¹
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_active
$ ie.checkboxes.each {|ãã§ãã¯ããã¯ã¹| ãã§ãã¯ããã¯ã¹ã眮ã}
ãã®ä»ã®æ¹æ³
å€ãã¯ãªã¢ãã¯ãªãã¯ãèšå®ãæå¹åïŒããã§ãã¯ïŒããã©ãã·ã¥ãhtmlãisSetïŒãgetState
æã䜿çšãããæ¹æ³
ã¯ãªãã¯ãèšå®ãã¯ãªã¢ããã§ãã¯ïŒ
äŸ
$ ie.checkboxïŒïŒnameãâ MilkâïŒãã»ãã
$ ie.checkboxïŒïŒnameãâ MilkâïŒãisSetïŒ
æ»ãå€ïŒtrue
$ ie.checkboxïŒïŒnameãâ MilkâïŒãã¯ãªãã¯
$ ie.checkboxïŒïŒnameãâ MilkâïŒãisSetïŒ
æ»ãå€ïŒfalse
$ ie.checkboxïŒïŒååããçä¹³ãïŒã
$ ie.checkboxïŒïŒnameãâ MilkâïŒãisSetïŒ
æ»ãå€ïŒfalse
ã©ãžãªãã¿ã³
説æ
ã©ãžãªå= group1 id =å€=ãã¿ãŒalt = src =
ãªããžã§ã¯ã
ã©ãžãª
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_active
$ ie.radios.each {| radio | ã©ãžãªã眮ã}
ãã®ä»ã®æ¹æ³
å€ãã¯ãªã¢ãã¯ãªãã¯ãèšå®ãæå¹ïŒããã§ãã¯ïŒãhtmlãisSetïŒãgetState
æã䜿çšãããæ¹æ³
ã»ããããã§ãã¯ïŒ ïŒæ確ãæ éã«ïŒ
äŸ
$ ie.radioïŒïŒå€ãããã¿ãŒãïŒã ã»ãã
$ ie.radioïŒïŒvalueãâ ButterâïŒãisSetïŒ
æ»ãå€ïŒtrue
泚ïŒã©ãžãªãã¿ã³ã®æ確ãªæ¹æ³ã¯äœ¿çšããªãããšããå§ãããŸãã å¥ã®ãã¿ã³ãæŒããŠã©ãžãªãã¿ã³ããªã»ããããããšããå§ãããŸã
$ ie.radioïŒïŒå€ãããã¿ãŒãïŒã ã¯ãªã¢
ãã¬ãŒã ïŒã¬ã€ã€ãŒã§ãïŒ
説æ
HTMLããã¥ã¡ã³ãå=ã¡ãã»ãŒãžID = src = frameshop-intro.html
ãªããžã§ã¯ã
ãã¬ãŒã
èªèæ¹æ³
$ ie.show_all_objects
$ ie.show_frames
ãã®ä»ã®æ¹æ³
泚ïŒãã¬ãŒã ã¯éåžžã®IEãŠã£ã³ããŠã®ããã«åäœããŸãã ã€ã³ããã¯ã¹ã ãã§ãªããåïŒå§ïŒã§ãã¢ã¯ã»ã¹ã§ããŸããéåžžã¯ãã¢ã¯ã»ã¹ããããã«å¥ã®å€æ°ãäœæãããŸãã ãŸããå€ãã®å Žåããã¬ãŒã ã¯ä»ã®ãã¬ãŒã ã«ãã¹ããããŸãã
æã䜿çšãããæ¹æ³
äŸ
$ f1 = $ ie.frameïŒïŒååããã¡ãã»ãŒãžãïŒ
$ f2 = $ ie.frameïŒïŒã€ã³ããã¯ã¹ã1ïŒ
$ f1.show_all_objects
æåŸã®è¡ã¯ãéåžžã®ãªããžã§ã¯ãã®ããã«ããã¹ãŠã®ãã¬ãŒã ãªããžã§ã¯ããè¿ããŸãã
ãã¯ããã¯
ãããã¢ããåŠç
JavaScriptããã®ä»ã®æè¡ã䜿çšããã¯ã©ã€ã¢ã³ãåŽã®æ€èšŒã¹ããŒã ãåºãæ®åããŠãããããWebã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã§ã¯ãããã¢ãããé »ç¹ã«çºçããŸãã
ãããã¯ãIEãã©ãŠã¶ã«ãã£ãŠçæããããã®ãšãã¢ããªã±ãŒã·ã§ã³èªäœã«ãã£ãŠçæããããã®ã®2ã€ã®ã¿ã€ãã«åããããŸãã
IEã¯éåžžãäžåºŠã ã衚瀺ããããããã¢ãããçæããŸãã å°ãªããšããæå·åãããŠããªãããŒã¿ã転éãããããã©ãŒã ãéä¿¡ãããããã¹ã¯ãŒãã®èšæ¶ã«ã€ããŠå°ããããããšãã«è¡šç€ºãããWindowsèŠåãŠã£ã³ããŠã確èªããŠãã ããã IEèšå®ã§ãã®ãããªãŠã£ã³ããŠã®è¡šç€ºããããã¯ããã¹ã¯ãªããã§åŠçããªãããšããå§ãããŸãã JavaScriptãšActiveXã¯ãŠã£ã³ããŠã圢æãããŠãŒã¶ãŒã«ãã®ã¢ã¯ã·ã§ã³ãŸãã¯ãã®ã¢ã¯ã·ã§ã³ã®ç¢ºèªãèŠæ±ãã誀ã£ãããŒã¿ã衚瀺ãããªã©ã IEã¯ãjavascriptãã€ã¢ãã°ãéãããããŸã§ããŒãžãå®å šã«ããŒãããããšã¯èªèããªããããRubyã¹ã¯ãªããã¯ãã€ã¢ãã°ãéãããããŸã§äœæ¥ãå®äºããŸããã
ããã¯åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãããŠã£ã³ããŠãéããã«ã¯åã®æé ãå®è¡ããå¿ èŠãããããã§ããããã€ã¢ãã°ããã¯ã¹ã®ããã«å®äºã§ããŸããã
ãã®ãããªç¶æ³ãé²ãã«ã¯ãjavascriptãããã¢ããã®è¡šç€ºãããªã¬ãŒããå¯èœæ§ã®ããã¢ã¯ã·ã§ã³ãå¥ã®ã¹ã¬ããã§å®è¡ããããšããå§ãããŸãã ããã«ãããå¥ã®ã¹ã¬ããããŠã£ã³ããŠãéããã®ãåŸ ã£ãŠããéãã¡ã€ã³ã¹ã¯ãªãããåäœãç¶ããããšãã§ããŸãã
ã¹ã¬ãã
確èªãã¿ã³ãã¯ãªãã¯ããŠããã€ã¢ãã°ãéããŸãã
ã¯ãªãã«ãŒ= WinClicker.new
Clicker.clickJavaScriptDialogïŒãOKãïŒ
é衚瀺ã®ãã¬ãŒã
å Žåã«ãã£ãŠã¯ãshow_framesé¢æ°ã0ãè¿ããŸãããããŒãžäžã®ãã¬ãŒã ã®å€ããŸãã¯ãã¹ãŠãé衚瀺ãã¬ãŒã ã®äžéšã«ãªãå ŽåããããŸãã ããŒãžã«ãªããžã§ã¯ããèŠèŠçã«å«ãŸããŠããã空ã®ãªã¹ããè¿ãããç¶æ³ã«çŽé¢ããŠããå Žåã¯ãããããé衚瀺ã®ãã¬ãŒã ã«ãããã©ããã確èªããŠãã ããã 次ã®ã³ãã³ãã䜿çšããŸãã
$ ie.frameïŒïŒã€ã³ããã¯ã¹ã1ïŒ...
ããã«ãããã€ã³ããã¯ã¹ã«ãã£ãŠãã¬ãŒã ã«ã¢ã¯ã»ã¹ã§ããŸãã ã¡ã€ã³ãã¬ãŒã ã®ã€ã³ããã¯ã¹ã¯0ã2çªç®ã®è¡ã¯ãããã1ã§ãã
ã€ã³ã¿ã©ã¯ãã£ãã¹ã¯ãªãã
RubyãšWATIRã§ã¹ã¯ãªãããèšè¿°ããããã»ã¹ã«æ £ãããšãç¬èªã®ã¬ã³ãŒããäžè¶³ããŠãããããããããéåžžã«æéãšæéããããããšã«æ°ä»ãã§ãããã æ鬱ãªæ鬱ãæç Žãã1ã€ã®æ¹æ³ã¯ããã«ãã€ã³ã®ã«ããŒã€ã³ã¿ãŒããªã¿ãŒãæã 䜿çšããããšã§ãã
ã€ã³ã¿ãŒããªã¿ãŒã¯ãéããŠãããã©ãŠã¶ãŒã§ã¹ã¯ãªããã1è¡ãã€ãããã°ããæ©èœãæäŸããŸãã æåããã¹ã¯ãªãããæ¯åå®è¡ãã代ããã«ãshow_linksãshow_all_objectsãªã©ã®äžèšã®ã¡ãœããã䜿çšããŠã衚瀺ãããããŒãžäžã®ãªããžã§ã¯ããèªèã§ããŸãã
å¥ã®æ¹æ³ã¯ãã€ã³ã¿ã©ã¯ãã£ããªshow_active_methodé¢æ°ã§ãã çŸåšãã©ãŒã«ã¹ãããŠãããªããžã§ã¯ããèªèããããã«äœ¿çšãããŸãã
puts $ ie.show_activeïŒïŒ
ãã³ããšã³ã
çµã¿èŸŒã¿ã®ã«ãã¯ã¢ãã
todaysDateå€æ°ãææ幎ïŒ04212006ïŒã®åœ¢åŒã§çŸåšã®æ¥ä»ã«èšå®ããŸã
$ todaysDate = Time.now.strftimeïŒ "ïŒ mïŒ dïŒ Y"ïŒ
æååã®æ¥ä»ãçŸåšã®æ¥ä»å€ã«çœ®ãæããŸã
pimsSQLãname = 'ïŒ_ 1'ããã³prime_broker = 'Bobby Brown'ã®blotter_fundsããåé€ã
ãŸãã¯åããæååé£çµã®ã¿ã䜿çš
pimsSQL "åå= '" + $ todaysDate + "_1'ããã³prime_broker = 'Bobby Brown'ã®blotter_fundsããåé€"
å ã®èšäºãžã®ãªã³ã¯ïŒ
www.thoughtworks.com/insights/blog/creating-automated-test-scripts-ruby-and-watir