genpaku's footprint

忘れてもいいように、技術で日々が少し便利になることを書いていきます

Selenium WebDriver でページを操作してみる

3回目の今日は実際にSeleniumでページを操作してみたいと思います。

内容はこのブログのページ内検索を利用して、検索を実施して結果として予想通りに検索できるかをテストします。

結果は下記のとおり。

    [TestClass]
    public class SearchTest
    {
        [TestMethod]
        public void SearchResult0()
        {
            // Firefox用のWebDriverをインスタンス化
            var driver = new FirefoxDriver();

            // 暗黙の待ち時間を設定 ・・・ ①
            driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0,0,5));
            
      //ブログを表示します。
            driver.Navigate().GoToUrl("http://genpaku1110.hatenablog.com/");
            
      //ブログのサイト内検索で「おしゃれな喫茶店」を入力します。
            IWebElement seachbox = driver.FindElement(By.Name("q"));
            seachbox.SendKeys("おしゃれな喫茶店");
            
      // 検索ボタンをクリック
            IWebElement submit = driver.FindElement(By.ClassName("search-module-button"));
            Actions builder = new Actions(driver);
      builder.Click(submit).Perform();

            // 結果が0件であることをテストする・・・そんな記事書いてないですからね。
            IWebElement result = driver.FindElement(By.CssSelector("#main-inner > p:nth-child(3)")); // ・・・②
            Assert.AreEqual("この期間に記事はありません", result.Text);

        }
}

ほとんどコメントで書いてしまいましたが、苦労した点としては①の「暗黙の待ち時間を設定」のコードがないと時たまテストが失敗するということです。 また便利だと思ったのは、②のCSSセレクタがそのまま使えることですね。

あとは、繰り返しの操作をまとめて使えば結構テストでも使えるのでないでしょうか。 また気が向いたら調べてみたいと思います。