【问题标题】:How can I run the same test on multiple threads in parallel using Selenium in C#?如何在 C# 中使用 Selenium 在多个线程上并行运行相同的测试?
【发布时间】:2019-02-05 16:05:22
【问题描述】:

基本上我有 1 个测试,我想同时在多个线程上运行。目前我发现唯一要做的就是为我想要运行的每个线程重写测试,所以如果我想要它 10 并行运行 10 次,我必须编写 10 个测试。

我正在尝试通过使用 selenium 和 C# 打开多个实例并尝试填写表单来在网站上进行一些小型负载测试。我也在尝试测试注册满时的竞争条件

[TestFixture]
[Parallelizable]
class TournamentPageScript1
{
    public static IWebDriver driver = new ChromeDriver();

    public static IWebDriver getDriverInstance()
    {
        return driver;
    }

    [SetUp]
    public void initialize()
    {
        driver.Navigate().GoToUrl("https://mywebsite.com");            
    }

    [Test]
    public void validateTournamentPage001()
    {
        //do some stuff
    }

    [TearDown]
    public void tearDown()
    {
        driver.Close();
    }
}
[TestFixture]
[Parallelizable]
class TournamentPageScript2
{
    public static IWebDriver driver = new ChromeDriver();

    public static IWebDriver getDriverInstance()
    {
        return driver;
    }

    [SetUp]
    public void initialize()
    {
        driver.Navigate().GoToUrl("https://mywebsite.com");            
    }

    [Test]
    public void validateTournamentPage002()
    {
        //do some stuff
    }

    [TearDown]
    public void tearDown()
    {
        driver.Close();
    }
}

我只想编写 1 次测试并让 Selenium 在多个线程上并行重复测试。

【问题讨论】:

  • 是否有某些原因您没有使用旨在负载测试而不是 Selenium 的负载测试工具?
  • 我也在尝试测试多个用户同时注册时的竞争条件
  • 如何在负载测试没有的情况下使用 Selenium 测试竞态条件?比赛条件是什么?
  • 我正在使用 selenium 完成并提交注册表单。注册有一个上限,一旦达到该上限,任何进一步的注册都会被列入候补名单。如果 10 人同时报名,只剩一个名额,我想确保 1 人已注册,9 人被列入候补名单。

标签: c# selenium automated-tests nunit


【解决方案1】:

是的,Selenium 在多线程上运行良好。但是,如果您试图让 Selenium 在完全相同的时间提交表单,您将必须有足够快的处理器来“同时”运行所有线程,这可能会很困难,因为 Selenium 有点重。 因此,简而言之,多个 selenium 实例同时运行良好,但您必须查看是否可以实际达到适合您情况的速度。

相关: C# multithreading

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多