ç§ã¯ããã«ãå€ãã®è«æãååãããã³éçºæ¹æ³ãç§ã«ãã£ãŠïŒãããŠãããããç§ã®æåž«ã«ãã£ãŠãïŒçºæãããªãã£ãããšãèšããªããã°ãªããŸããã
ããããããã®æçš¿ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®èªåãã¹ãã«åŸäºãå§ããã°ããã®äººã ãå©ããã§ãããã
æºåãã
Seleniumã䜿çšããŠèªåãã¹ããéçºããã«ã¯ã次ã®ã³ã³ããŒãã³ããå¿ èŠã§ãã
éçºç°å¢ããã®å Žåã¯Visual Studioã
æžããããã¹ããèªåçã«å®è¡ããããã®NUnitããã°ã©ã ïŒããããããŠã³ããŒãïŒ www.nunit.org/index.php?p=download ïŒ;
2ã€ã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããMozilla Firefoxãã©ãŠã¶ãŒïŒFireBugãšFirePathïŒãã®èšäºã§ã¯äœ¿çšããŸããïŒã
éçºç°å¢ã®ã»ããã¢ãã
èªåãã¹ããäœæããã«ã¯ã ã¯ã©ã¹ã©ã€ãã©ãªãªã©ã®æ°ãããããžã§ã¯ããäœæããå¿ èŠããããŸãïŒã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ã¯äœæã§ããŸããããã®å Žåã¯ã§ããŸããïŒã ãã¹ããããããžã§ã¯ãã®ååã«é¢é£ä»ããããååãä»ããããšããå§ãããŸãã ãŸãããã¹ããããžã§ã¯ããšå ±ã«ãœãªã¥ãŒã·ã§ã³èªäœã«ãã¹ããããžã§ã¯ããäœæããããšããå§ãããŸãã
ãã¹ããããžã§ã¯ããäœæãããããã¹ãçšã®3ã€ã®ç¹å¥ãªã©ã€ãã©ãªãæ¥ç¶ããå¿ èŠããããŸãã
NUnitïŒnunit.frameworkïŒ -èªåãã¹ããçŽæ¥å®è¡ããããã®ã©ã€ãã©ãªïŒSeleniumã ãã§ãªãïŒã
WebDriver + WebDriver.Support-çŽæ¥Selenium'aã©ã€ãã©ãªã
ã©ã€ãã©ãªããã¹ããããžã§ã¯ãã«NuGetçµç±ã§æ¥ç¶ãããã code.google.com / p / selenium / downloads / listããææ°ããŒãžã§ã³ãããŠã³ããŒãããŠæåã§æ¥ç¶ã§ããŸãã
ãã¹ããããžã§ã¯ãã¢ãŒããã¯ãã£ã®æ§ç¯
åºæ¬ã¯ã©ã¹
èªåãã¹ãèªäœãäœæããåã«ãæåã«ãã«ããŒã¯ã©ã¹ãäœæããå¿ èŠããããŸãã
ãã¹ããããžã§ã¯ãã§ãæ°ããã¯ã©ã¹ãè¿œå ãã SeleniumTestBase.csãšåŒã³ãŸãïŒå¥ã®æ¹æ³ã§ãããŸããŸããïŒã ãã¹ãŠã®ãã¹ãã¯ã©ã¹ãå°æ¥ç¶æ¿ãããã®ã¯ãã®ã¯ã©ã¹ãããªã®ã§ããã®ã¯ã©ã¹ãpublic abstractãšããŠå®£èšããŸãã ãŸããã¯ã©ã¹ã«ãã¹ãã¯ã©ã¹ãšããŠæå®ãã[TestFixture]å±æ§ãã¯ã©ã¹ã«è¿œå ããå¿ èŠããããŸãã ãã®ã¯ã©ã¹ã§ã¯ããã¹ãã«åæ Œããããã«å¿ èŠãªãã£ãŒã«ããšã¡ãœããã宣èšãããŠããŸãã
ãã®ã¯ã©ã¹ã§ã¯ããã£ãŒã«ãã宣èšããå¿ èŠããããŸãã
ä¿è·ãããIWebDriverãã©ã€ã㌠ã -ããã¯ããã¹ããå®è¡ããåã«äœæããããã©ãŠã¶ãŒãã©ã€ããŒã®ã€ã³ã¹ã¿ã³ã¹ã§ãã 4çš®é¡ã®ãã©ã€ããŒããããŸãïŒ+éçºäžã®ããã€ãïŒïŒFirefoxDriverãInternetExplorerDriverãChromeDriverãHtmlUnitDriverïŒã°ã©ãã£ã«ã«ã³ã³ããŒãã³ããªãã®ã¯ãã¹ãã©ãããã©ãŒã ä»®æ³ãã©ãŠã¶ãŒïŒã
ãŸããã¯ã©ã¹ã§4ã€ã®ã¡ãœããã宣èšããŸãïŒãã ããäžéšã¯ç©ºãŸãã¯\ã§ããããŸã£ããå®çŸ©ãããŸããïŒã
public void TestInitializeïŒïŒwith [TestFixtureSetUp]å±æ§ -ãã®å±æ§ãæã€ã¡ãœããã¯ããã¹ãã¯ã©ã¹ãããã¹ããå®è¡ããåã«1ååŒã³åºãããŸãïŒè€æ°ã®ã¯ã©ã¹ãããå Žåãã¡ãœããã¯æåã®ã¯ã©ã¹ã®ãã¹ãã®åã2çªç®ã®ã¯ã©ã¹ã®ã¡ãœããã®åãªã©ã«åŒã³åºãããŸãïŒããã«ïŒã ãã®ã¯ã©ã¹ã§ã¯ãããšãã°æ¬¡ã®ããã«ç¹å®ã®å€ãDriverå€æ°ã«å²ãåœãŠãããšãæãŸããã§ãã
Driver = new FirefoxDriver();
public void TestCleanupïŒïŒwith [TestFixtureTearDown]å±æ§ -åã®ã¡ãœãããšåãããã«åäœãããããã¹ãã¯ã©ã¹ãå®è¡ããåŸã®ã¿ã ãã®ã¯ã©ã¹ã§ã¯ã次ã®ãã¹ãã¯ã©ã¹ãå®è¡ãããšããã©ãŠã¶ãŒãã©ã€ããŒã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæãããããããã©ãŠã¶ãŒãã©ã€ããŒãéããããšãæãŸããã§ãïŒãã®çµæããã©ãŠã¶ãŒãã©ã€ããŒã®å€ãã®ã€ã³ã¹ã¿ã³ã¹ãéãããŸãŸã«ãªããRAMããŽã ã§ã¯ãªããªããŸãïŒã
Driver.Quit();
public void OneTearDownïŒïŒwith [TearDown]å±æ§ -ã¡ãœããã¯åã ã®ãã¹ããå®è¡ããåŸã«åŒã³åºãããŸãã ããšãã°ããã®ã¡ãœããã§ã¯ãæ°ãããã¹ãã®åã«ãã©ãŠã¶ãŒã®Cookieãã¯ãªã¢ã§ããŸãã
Driver.Manage().Cookies.DeleteAllCookies();
[SetUp]å±æ§ãæã€public void OneSetUpïŒïŒ -ã¡ãœããã¯ãåã ã®ãã¹ããå®è¡ãããåã«åŒã³åºãããŸãã ããšãã°ããã¹ãã®å®è¡æã«ãã©ãŠã¶ãŒãŠã£ã³ããŠãå šç»é¢ã«å±éã§ããŸãïŒHtmlUnitDriverã«ã¯é¢ä¿ãããŸããïŒã
Driver.Manage().Window.Maxmize();
ã©ãããŒ
ç°ãªããã¹ããïŒç°ãªãã¯ã©ã¹ã§ãã£ãŠãïŒäœæããå Žåãã³ãŒãã®è€è£œãå¯èœã§ãïŒããæ£ç¢ºã«ã¯ãééããªãå¯èœã§ãïŒã ãã¹ãã¯ã©ã¹ã®æ··ä¹±ãé¿ããããã«ããã«ããŒã¯ã©ã¹ã®éçã¯ã©ã¹WrapperãäœæããŠãããã«å¥ã®ã¡ãœããã§ã³ãŒããè€è£œãããšäŸ¿å©ã§ãã
ã»ãšãã©ã®ãã¹ãã¯ãåãã³ãŒãè¡ã§éå§ãããŸãã
Driver.Navigate().GoToUrl(<>);
ãããã£ãŠãWrapperã¯ã©ã¹ã§ã¯ãå¿ èŠãªURLãšãã®URLãååŸããã¡ãœãããèšè¿°ãããã©ã€ããŒãéçæåå_domainãã£ãŒã«ããå®çŸ©ããã®ãè«ççã§ãã
ã³ãŒãã®äžéš
public static string GetUrl() { _domain = "http:\\www.yandex.ru"; return _domain; }
Wrapper.csãšSeleniumTestBase.csã®éãã¯ãæåã¯ãã¹ãå ã§ïŒããã«SeleniumTestBaseå ã§ãïŒåŒã³åºãããã¡ãœããã宣èšããã2çªç®ã§ã¯ãã¹ãã®åãŸãã¯åŸã«åŒã³åºãããã¡ãœããã宣èšãããããšã§ãã
è£å©ãã¹ããäœæããåŸãéåžžã®ãã¹ãã¯ã©ã¹ãæ¢ã«äœæããŸãã
ãããã£ãŠããã¹ããããžã§ã¯ãã®ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ããã«ãªããŸãã

ãã¹ãã©ã€ãã£ã³ã°ã®äŸ
æ°ãããã¹ãã¯ã©ã¹ãäœæããTestClass1.csãåŒã³åºããŸãã æåã«ç°¡åãªãã¹ãã³ãŒããèšè¿°ãã次ã«ã©ã®ã³ãŒãè¡ããããè¡ãã®ãã説æããŸãã
GoTo Yandex
[Test, Timeout(10000)] public void Test1() { Driver.Navigate().GoToUrl(Wrapper.GetUrl()); Assert.IsTrue(Driver.Title == ""); }
[ãã¹ã] -ãã®ã¡ãœããããã¹ãã§ããããšã決å®ããå±æ§ã
TimeotïŒint millSecïŒ -ãã¹ãå±æ§ã§ã®ã¿åäœããŸã-ãã¹ãã«åæ Œããæ倧蚱容ããªç§æ°ã瀺ããŸãã ã¿ã€ã ã¢ãŠããè¶ ãããšããã¹ãã¯çŽã¡ã«ïŒå®è¡æã§ãïŒã¯ã©ãã·ã¥ãã倱æãããšèŠãªãããŸãã
public void-ãã¹ãã¯ãã®ãããªã¢ã¯ã»ã¹ä¿®é£Ÿåã®ã¿ãæã€å¿ èŠãããããã¹ããæ£ããæ©èœããããã«å€ãè¿ããªãããã«ããå¿ èŠããããŸãã
Driver.NavigateïŒïŒãGoToUrlïŒWrapper.GetUrlïŒïŒïŒ -ãã©ãŠã¶ãŒãã©ã€ããŒã¯ãYandexããŒãžãéããŸãã
Assert.IsTrueïŒDriver.Title ==â YandexâïŒ -çŽæ¥ãã§ãã¯ããã®å Žåããã¹ãã¯ããŒãžã¿ã€ãã«ããYandexãã§ããããšã確èªããŸãããã®å Žåããã¹ãã¯åæ ŒãšèŠãªãããããã§ãªãå Žåã¯ãã¹ãã¯å€±æããŸãã
ãã¹ããå®è¡ãã
ãã¹ããå®è¡ããã«ã¯ããã®ããã®ç¹å¥ã«äœæãããããã°ã©ã -NUnit ïŒããã¥ã¡ã³ãã®åé ã«ããããŠã³ããŒããžã®ãªã³ã¯ïŒãå¿ èŠã§ãã
ãã¹ããããžã§ã¯ããã³ã³ãã€ã«ããŸãã åºåã«ã¯ã.dllã¿ã€ãã®ãã¡ã€ã«ããããŸã
NUnitãå®è¡ããŸãã 次ã«ã[ãã¡ã€ã«]-[ãããžã§ã¯ããéã]ãã¯ãªãã¯ããŸãã ã³ã³ãã€ã«ãããã°ããã®ã©ã€ãã©ãªãèŠã€ããŠéžæããå¿ èŠããããŠã£ã³ããŠã衚瀺ãããŸãã
ã©ã€ãã©ãªãããã°ã©ã ã«ããŒããããšãå·ŠåŽã«ãã¹ããå«ãŸãããã¹ãã¯ã©ã¹ã®ããªãŒã衚瀺ãããŸãã ãã®ããªãŒã§ãåäžã®ãã¹ããã¯ã©ã¹ããŸãã¯ãã¹ãŠã®ãã¹ãã¯ã©ã¹ãéžæãã[å®è¡]ãã¿ã³ãã¯ãªãã¯ãããšããã¹ãã®å®è¡ãéå§ãããŸãã åæ¢ãã¿ã³ãæŒããšããã€ã§ãå®è¡ãåæ¢ã§ããŸãã
ãã¹ãã«åæ ŒãããšãããªãŒå ã®è²ãå€ãããŸãïŒç·-ãã¹ãã«åæ Œãèµ€-ãã¹ããèœã¡ãé»è²-äœããã®çç±ã§ãã¹ãã倱æïŒèœäžã§ã¯ãªãïŒãã°ã¬ãŒ-ãã¹ãããŸã éå§ãããŠããŸãã ãã¿ã³ã®äžã«ã¯ãããããããããã¹ãã®ãã°ãå«ããŠã£ã³ããŠããããç¹å®ã®ãã¹ãã倱æããçç±ãèŠã€ããããšãã§ããŸãã
è¿œå æ å ±
æéã®ãã©ãŠã¶ãŒãã©ã€ããŒã¯ChromeDriverãšèŠãªãããŸãã æãé ããšæããŸãã
ChromeDriverããã³InternetExplorerDriverã®å Žåãè¿œå ã®ãã©ã€ããŒã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããŠããããžã§ã¯ããã£ã¬ã¯ããªã«é 眮ããå¿ èŠããããŸãã
ãŸãããã¹ãã§ã¯å±æ§ã䜿çšãããŸãã
[TestCaseïŒvar v1ã...ãvar vOver9000ïŒ] -ãã¹ãã§è€æ°ã®å ¥åããŒã¿ãå埩åŠçããå¿ èŠãããå Žåã«äœ¿çšãããŸãã ãã¹ãã®åã«ããã¹ãã±ãŒã¹ãããã€ã§ãäœæã§ããŸãã æ£åžžã«åäœãããããã«ããã¹ãã¡ãœããã¯ããã¹ãã±ãŒã¹ã«ç»é²ãããŠããå€æ°ã®æ°ãšåãæ°ã®ãã©ã¡ãŒã¿ãŒãæž¡ãå¿ èŠããããŸãã ãã¹ãã±ãŒã¹ã®æ§æã¯åäžã§ããå¿ èŠããããŸãïŒ1ã€ã®å€æ°ã§ãã¹ãã±ãŒã¹ãäœæãããã¹ãåã«2ã€ã®å€æ°ã§ãã¹ãã±ãŒã¹ãäœæããããšã¯ã§ããŸããïŒã äŸïŒ
ãã¹ãã±ãŒã¹ïŒïŒ
[Test, Timeout(10000)] [TestCase("", 1)] [TestCase("", 2)] [TestCase("", 3)] [TestCase("", 4)] [TestCase("", 5)] public void Test2(string str, int days) { /* 5 10 */}
ãã¹ãã±ãŒã¹ã®ä»£ããã«ãå±æ§[RangeïŒïŒ]ããã³[ValuesïŒïŒ]ããããŸãã ãã ãããã¹ãã±ãŒã¹ãšã¯ç°ãªãããããã®å±æ§ã¯æž¡ãããåŒæ°ãšãšãã«æžã蟌ãŸããŸãã ç¯å²ã¯åæå€ãéåæå€ã«ã¯æé©ã§ãã ãŸããå®è¡ããããã¹ãã®æ°ã¯ãå€æ°ã®ãã¹ãŠã®çµã¿åããã®æ°ã«çãããªããŸãã äŸïŒ
ç¯å²+å€
[Test] public void Test3([Range(0,3)]int a, [Values(â0â, â1â, â2â, â3â)]string b) { Assert.IsTrue(a.ToString() == b); }
16ã®ãã¹ããããããã®ãã¡4ã€ã ããåæ ŒããŸãã
ãã³ã
èªååããããã¹ããäœæãããšãã¯ã AAAã®æŠå¿µ-Arrange-Act-Assertã«åŸãå¿ èŠããããŸãã
é 眮 -ãã¹ãèªäœã®åã«å¿ èŠãªèšå®ãšã¢ã¯ã·ã§ã³ã
è¡çº -çŽæ¥ãã¹ã;
ã¢ãµãŒã -ãæåŸ ãããçµæ==çŸåšã®çµæãã¿ã€ãã®æ¡ä»¶ããã§ãã¯ããããã®ãããã¯ã
äžèšã®äŸã䜿çšããŠãå°ãæžãçŽããŠãã ããã
AAA Begin
[Test, Timeout(10000)] public void Test1() { Driver.Navigate().GoToUrl(Wrapper.GetUrl()); var title = Driver.Title; Assert.IsTrue(title == ""); }
ããã§ãArrangeã¯urlã®ééãActã¯ã¿ã€ãã«ããŒãžã®èšç®ãAssertã¯æ¡ä»¶ãexpected result == current resultãã®ãã§ãã¯ã§ãã
èªã¿ãããããããã«ããã¹ãã¯æ¬¡ã®ããã«æžãæããããšãã§ããŸãã
AAA Complete
[Test, Timeout(10000)] public void Test1() { //Note : Arrange Driver.Navigate().GoToUrl("http:\\www.yandex.ru"); //Note : Act var title = Driver.Title; //Note : Assert Assert.IsTrue(title == ""); }
ç¿æ £ã身ã«ä»ããŠãã ããïŒ1ã€ã®ãã¹ã-1ã€ã®ã¢ãµãŒãã ãŸã£ããéåããªããã極端ãªå Žåã«ã¯éåããããšããå§ãããŸãïŒãã¹ãã§å€æ°ã®ãã§ãã¯ãè¡ããšãã³ãŒãã®å¯èªæ§ãäœäžããŸãïŒã
ã³ãŒãå ã®å€ãã®ã»ã¬ã¯ã¿ãŒã¯æ°åç¹°ãè¿ãããšãã§ããŸãã ãµã€ãã®ã¬ã€ã¢ãŠãã¯åžžã«å€åããå¯èœæ§ããããã»ã¬ã¯ã¿ãŒããããããããããå¥ã ã®æååå®æ°ã«å ¥ããæ¹ãé©åã§ãã ãã®åŸãã»ã¬ã¯ã¿ãå€æŽããå Žåããããžã§ã¯ãå šäœã§20ç®æã§ã¯ãªãã1ç®æã§ã®ã¿å€æŽããå¿ èŠããããŸãã
ãã©ãŠã¶ãŒãã©ã€ããŒãæåã«èµ·åãããšããããŒãžã®èªã¿èŸŒã¿ã«æéããããããšãããããããã¹ãã®æåã®èµ·åãã¿ã€ã ã¢ãŠãã§èœã¡ãããšããããŸãã äžéšã®ãã¹ãã®ã¿ã€ã ã¢ãŠãã§å¢å ãããå¿ èŠããããŸãã
å質åºæºã«ããããã©ãŠã¶ã§ããŒãžãããŒãããããã®ã¿ã€ã ã¢ãŠãã¯10ç§ã§ãã ããŒãžäžã®èŠçŽ ãèŠã€ããããã®ã¿ã€ã ã¢ãŠãã11ç§ã§èšå®ããŸãïŒæ倧12ïŒã
ããŒãžäžã®äžéšã®èŠçŽ ã¯ãSelenium + CïŒã䜿çšããŠæäœã§ããŸããã ãã®å Žåããã®ãããªããŒãžèŠçŽ ã«ã¢ã¯ã»ã¹ããã«ã¯ãJavaScript + JQueryã䜿çšããå¿ èŠããããŸãã äŸïŒ
JavaScript + jQuery
protected IJavaScriptExecutor _jsExecutor; var script = @"var c = $('table>tbody:visible').last();" + "c = c.find(\"tr:nth-child(2)\");" + "c.find(\"td:nth-child(1)\").click();"; _jsExecutor = (IJavaScriptExecutor)Driver; _jsExecutor.ExecuteScript(script);
ãã¹ãã®å®è¡ã«äŸ¿å©ãªããã«ïŒNUnitã¯æã䟿å©ãªãã®ã§ã¯ãããŸããïŒããªãã·ã§ã³ã§ReSharperãã©ã°ã€ã³ãVisual Studioã«ã€ã³ã¹ããŒã«ã§ããŸããããã«ããããã¹ããç°¡åã«å®è¡ããå®è¡çµæã確èªã§ããŸãã ãã ããNUnitãšã¯ç°ãªããReSharperã¯ææã®ã¢ããªã³ã§ãã
ãããã«
æ®å¿µãªããããã®èšäºã¯Seleniumãã¹ããæžãããã®ã¬ã€ããšã¯èŠãªããŸãããWebã¢ããªã±ãŒã·ã§ã³ããã¹ãããããã®ã¡ãœãããšã¡ãœããã¯ããã§ã¯èª¬æãããŠããªãããã§ãã ç¹ã«ãæ¡ä»¶ããã§ãã¯ããããã®Assertã¯ã©ã¹ãšãWebããŒãžäžã®èŠçŽ ãèŠã€ããããã®Seleniumã¡ãœããã å¥ã®èšäºãããã«å°å¿µããŸãã
ç§ã®ã¢ãããŒããèªåãã¹ããæžãããã«èª°ãã«ãã£ãŠäœ¿ãããããšãé¡ã£ãŠããŸãã
ãæž èŽããããšãããããŸããïŒ