3

我的办公室有大约 300 个网页,应该定期进行测试。我在 Visual Studio 2010 中使用 Nunit、Selenium 和 C#。我使用这个框架作为基础,并且我确实有一些工作测试。

我遇到的问题是当我运行整个套件时。在每次运行中,随机测试将失败。如果它们单独运行,它们都会通过。我的猜测是 Nunit 正试图同时运行所有 7 个测试,而浏览器由于显而易见的原因无法支持这一点。从视觉上观察浏览器,情况似乎确实如此。

查看下面的屏幕截图,我需要弄清楚 Index_Tests 下的测试顺序运行而不是并行运行的方式。

在此处输入图像描述

错误:

Selenium2.OfficeClass.Tests.Index_Tests.index_4:
OpenQA.Selenium.NoSuchElementException : Unable to locate element: "method":"id","selector":"textSelectorName"}

Selenium2.OfficeClass.Tests.Index_Tests.index_7:
OpenQA.Selenium.NoSuchElementException : Unable to locate element: "method":"id","selector":"textSelectorName"}

一个测试的例子:

using OpenQA.Selenium;
using NUnit.Framework;

namespace Selenium2.OfficeClass.Tests
{
    [TestFixture]
    public class Index_Tests : TestBase
    {
        public IWebDriver driver;

        [TestFixtureSetUp]
        public void TestFixtureSetUp()
        {
            driver = StartBrowser();
        }

        [TestFixtureTearDown]
        public void TestFixtureTearDown()
        {
            driver.Quit();
        }

        [Test]
        public void index_1()
        {
            OfficeClass index = new OfficeClass(driver);
            index.Navigate("http://url_goeshere");
            index.SendKeyID("txtFiscalYear", "input");
            index.SendKeyID("txtIndex", "");
            index.SendKeyID("txtActivity", "input");
            index.ClickID("btnDisplay");
        }
    }
}
4

1 回答 1

2

NUnit 通常不会并行运行测试。然而,对许多测试使用相同的 Web 驱动程序,您可能会在测试之间引入不必要的依赖关系。您描述的行为看起来像是您的浏览器在测试后在后台异步执行了一些事情,这有时可能会影响后面的测试。

我的建议:如果为每个测试设置单独的驱动程序太慢,请尝试在测试之间使您的 Web 浏览器(驱动程序)处于定义的初始状态,并确保在每个测试完成时完成所有异步任务。您可以为此使用[Setup]和/或[Teardown]方法。也许您必须在每次测试后添加一些等待代码。我对 Selenium 知之甚少,但是在这里简要查看一下文档,有一个WebDriverWait示例可能对您有用。

于 2013-11-06T17:26:23.113 回答