3

私のオフィスには、かなり定期的にテストする必要がある約 300 の Web ページがあります。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"}

1 つのテストの例:

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 に答える