1

私は Selenium Grid2 と MbUnit/Gallio を使用して C# で作業しています。MbUnit v3 で MbUnit UsingFactories の代替を駆動するために、データセットの組み合わせを使用できることを読みました。そのため、MbUnit を使用して、複数のブラウザーで単一のテストを実行し、追加のデータセットを使用して、ブラウザーとデータのデカルト積をテストにしようとしています。追加のデータ セットを使用せずにコードを実行すると、問題なく動作し、2 つのブラウザーに対してテスト コードが実行されます。

        private IEnumerable<ICapabilities> ProvideCapabilities
    {
        get
        {
            yield return DesiredCapabilities.Firefox();
            yield return DesiredCapabilities.Chrome();
        }
    }
    [Test]
    public void testBrowser([Factory("ProvideCapabilities")] ICapabilities browser)
    {
        IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"),
                                  browser);
        driver.Navigate().GoToUrl("http://www.google.com/");
        IWebElement query = driver.FindElement(By.Name("q"));
        query.SendKeys("Bark");
        query.Submit();
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until((d) => { return d.Title.ToLower().StartsWith("bark"); });
        System.Console.WriteLine("Page title is: " + driver.Title);
        driver.Quit();
        System.Console.WriteLine("end of testBrowser");
    }

データセットを追加して、テストケースのデータ駆動型 Selenium をタイムアウトにすると、アクションはブラウザに対して正しく実行されました。グリッドがノードから結果を受け取ることはないようです。MbUnit テストランナー Icarus では、4 つのテストが実行されましたが、タイムアウトしました。コードは実行ごとに新しい WebDriver オブジェクトを作成していますが、Selenium Grid2 に他の共有リソースがあり、これが機能しない可能性があります。

    private IEnumerable<ICapabilities> ProvideCapabilities
    {
        get
        {
            yield return DesiredCapabilities.Firefox();
            yield return DesiredCapabilities.Chrome();
        }
    }
    public IEnumerable<string> ProvideSearchString
    {
        get
        {
            yield return "Cheese";
            yield return "Bark";
        }
    }

    [Test]
    public void testBrowser([Factory("ProvideCapabilities")] ICapabilities browser, [Factory("ProvideSearchString")] string searchString)
    {
        IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"),
                                  browser);
        driver.Navigate().GoToUrl("http://www.google.com/");
        IWebElement query = driver.FindElement(By.Name("q"));
        query.SendKeys(searchString);
        query.Submit();
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until((d) => { return d.Title.ToLower().StartsWith(searchString); });
        System.Console.WriteLine("Page title is: " + driver.Title);
        driver.Quit();
        System.Console.WriteLine("end of testBrowser");
    }
4

0 に答える 0