【发布时间】:2012-02-17 17:21:26
【问题描述】:
当我在 Visual Studio 中编写测试时,我会通过保存、构建然后在 Nunit 中运行测试来检查它是否有效(右键单击测试然后运行)。
测试成功了... 所以我继续...
现在我已经编写了另一个测试,它可以像上面一样保存和测试它。但是,它们一起运行时不起作用。
这是我的两个测试,单独运行时有效,但一起运行时失败:
using System;
using NUnit.Framework;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium;
namespace Fixtures.Users.Page1
{
[TestFixture]
public class AdminNavigateToPage1 : SeleniumTestBase
{
[Test]
public void AdminNavigateToPage1()
{
NavigateTo<LogonPage>().LogonAsCustomerAdministrator();
NavigateTo<Page1>();
var headerelement = Driver.FindElement(By.ClassName("header"));
Assert.That(headerelement.Text, Is.EqualTo("Page Title"));
Assert.That(Driver.Url, Is.EqualTo("http://localhost/Page Title"));
}
[Test]
public void AdminNavigateToPage1ViaMenu()
{
NavigateTo<LogonPage>().LogonAsCustomerAdministrator();
Driver.FindElement(By.Id("menuitem1")).Click();
Driver.FindElement(By.Id("submenuitem4")).Click();
var headerelement = Driver.FindElement(By.ClassName("header"));
Assert.That(headerelement.Text, Is.EqualTo("Page Title"));
Assert.That(Driver.Url, Is.EqualTo("http://localhost/Page Title"));
}
}
}
当第二个测试因为它们一起运行而失败时
Nunit 展示了这个:
Sse.Bec.Web.Tests.Fixtures.ManageSitesAndUsers.ChangeOfPremises.AdminNavigateToChangeOfPremises.AdminNavigateToPageChangeOfPremisesViaMenu: OpenQA.Selenium.NoSuchElementException : 找不到元素
这一行被突出显示:
var headerelement = Driver.FindElement(By.ClassName("header"));
有谁知道为什么我的代码一起运行时失败,但单独运行时通过?
任何答案将不胜感激!
【问题讨论】:
-
你确定测试不是共享状态吗?浏览器是否在测试之间关闭并重新打开?当它们一起运行时,哪个测试失败了?两个都失败了,还是一个通过,一个失败?
-
浏览器关闭,命令窗口也关闭。它们再次重新打开以处理以下测试......它是第一个通过的测试,然后所有后续测试通常都会失败,并且它们总是同样失败原因张贴在上面。
-
对您的具体问题没有帮助,但请查看ncrunch.net,它会在后台运行您的测试。摆脱整个“保存、构建然后运行测试”的麻烦。
-
这一直发生在我身上(尽管有不同的错误),尽管我正在访问数据库并在事务中运行每个测试。我得到非线程安全异常,所以当通过 Visual 运行时Studio下一个测试必须在上一个测试完成之前开始(运行命令行似乎没有同样的问题)
标签: c# visual-studio-2010 selenium-ide nunit-2.5