【发布时间】:2022-12-18 00:40:55
【问题描述】:
我正在用 XUnit 编写 Selenium 测试。当我运行它们时,它们总是被执行两次。它们第一次运行时,我看到它们正在测试资源管理器中运行,但第二次在测试资源管理器中它们似乎已经完成,但仍有新的浏览器选项卡打开并再次开始相同的测试。在关于 stackoverflow 的其他问题中,我只看到当你两次拥有包 xunit.runner.visualstudio 时它可能会发生,但事实并非如此。我该怎么做才能停止让我的测试运行两次?
我的包裹
- coverlet.collector (3.1.2)
- Microsoft.NET.Test.Sdk (17.3.2)
- Selenium.WebDriver (4.7.0)
- xunit (2.4.2)
- xunit.runner.visualstudio (2.4.5)
我是如何编写测试的
using OpenQA.Selenium.Interactions;
using SeleniumTests.Extensions;
namespace SeleniumTests.Tests;
[Collection("Sequential")]
public class MyTests : IDisposable
{
private readonly IWebDriver _driver;
public MyTests()
{
_driver = new FirefoxDriver();
}
public void Dispose()
{
_driver.Quit();
_driver.Dispose();
}
[Fact]
public void DoSomething_Success()
{
// Arrange
var act = new Actions(_driver);
var submitButtonXPath = "/html/body/modal-container/div/div/div[2]/div[1]/form/div[5]/div/button[2]";
_driver.Navigate().GoToUrl(Consts.FIXPLANUNG_URL);
_driver.MicrosoftLogin("MyEMail", "MyPassword");
// Act
var emptyFieldXPath = FindBookingFieldXPath();
if (string.IsNullOrWhiteSpace(emptyFieldXPath))
{
Assert.Fail("No free booking field was found");
}
var bookingField = _driver.FindElement(By.XPath(emptyFieldXPath));
act.DoubleClick(bookingField).Perform();
_driver.FindElement(By.Id("project-input-field")).SendManyKeys(Consts.DUMMY_PROJECT);
Thread.Sleep(1000);
_driver.FindElement(By.XPath(submitButtonXPath)).Click();
Thread.Sleep(2000);
var result = _driver.FindElement(By.XPath(emptyFieldXPath)).Text;
// Assert
Assert.NotNull(result);
Assert.Equal(result, Consts.DUMMY_PROJECT);
}
}
【问题讨论】: