为什么我的测试一起运行时会失败,但要单独通过? [英] Why do my tests fail when run together, but pass individually?
问题描述
当我在Visual Studio中编写测试时,通过保存,构建然后在Nunit中运行测试来检查它是否正常工作(右键单击测试然后运行).
When I write a test in Visual Studio, I check that it works by saving, building and then running the test it in Nunit (right click on the test then run).
测试正常进行... 所以我继续...
The test works yay... so I Move on...
现在,我编写了另一个测试,并且可以像上面那样保存并测试它,因此它可以正常工作.但是,当它们一起运行时,它们将无法工作.
Now I have written another test and it works as I have saved and tested it like above. But, they dont work when they are run together.
这是我的两个测试,分别运行时会起作用,但一起运行时会失败:
Here are my two tests that work when run as individuals but fail when run together:
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"));
}
}
}
当第二项测试因为一起运行而失败时
When the second test fails because they have been run together
Nunit呈现以下内容:
Sse.Bec.Web.Tests.Fixtures.ManageSitesAndUsers.ChangeOfPremises.AdminNavigateToChangeOfPremises.AdminNavigateToPageChangeOfPremisesViaMenu: OpenQA.Selenium.NoSuchElementException:找不到元素
Sse.Bec.Web.Tests.Fixtures.ManageSitesAndUsers.ChangeOfPremises.AdminNavigateToChangeOfPremises.AdminNavigateToPageChangeOfPremisesViaMenu: OpenQA.Selenium.NoSuchElementException : The element could not be found
此行高亮显示:
var headerelement = Driver.FindElement(By.ClassName("header"));
有人知道为什么我的代码一起运行时会失败,但是单独运行时会失败吗?
Does anyone know why my code fails when run together, but passes when run alone?
任何答案将不胜感激!
推荐答案
可以尝试的两件事
- 在以下两行之间输入断点.并查看第二行时您在哪个页面上
-
通过Thread.Sleep在这两行之间引入一点延迟
- put the break point between the following two lines. And see which page are you in when the second line is hit
Introduce a slight delay between these two lines via Thread.Sleep
Driver.FindElement(By.Id("submenuitem4")).Click(); var headerelement = Driver.FindElement(By.ClassName("header"));
Driver.FindElement(By.Id("submenuitem4")).Click(); var headerelement = Driver.FindElement(By.ClassName("header"));
这篇关于为什么我的测试一起运行时会失败,但要单独通过?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!