datadriven多浏览器Selenium Grid2 MbUnit / Gallio C#测试超时

时间:2013-02-07 07:05:12

标签: selenium mbunit

我在C#中使用Selenium Grid2和MbUnit / Gallio。我读到数据集的组合可用于驱动MbUnit UsingFactories alternative in MbUnit v3。因此,我尝试使用MbUnit在多个浏览器上执行单个测试,并使用其他数据集将浏览器和数据的笛卡尔积产品转换为测试。如果我在没有额外数据集的情况下运行代码工作正常,则会针对两个浏览器执行测试代码。

        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 testrunner Icarus中,我看到四个测试已经运行但是超时。代码是在每次执行时创建一个新的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");
    }

0 个答案:

没有答案