首页 > 解决方案 > 尝试并行化 WebDriver 以进行测试时需要对象引用

问题描述

我目前正在尝试为我正在通过 Selenium 运行以测试网站的 SpecFlow 测试实现滚动功能。我需要能够向下滚动,以便驱动程序可以看到某些元素并对其进行测试。基本上,我编写了一个滚动功能(使用 webdriver 作为 IJavaSriptExecutor),但是当我在测试中实现该步骤时,它会尝试打开一个单独的 webdriver。我需要此滚动功能在当前正在测试其他功能的驱动程序上执行。基本上,如果有意义的话,我需要一切都保持一致。无论如何,这是我的代码,底部有错误。我不知道问题是什么。

namespace (mynamespace)
{
    [Binding]


    public class SeleniumContext
    {
        public SeleniumContext()
        {
            //create the selenium context
            WebDriver = new ChromeDriver();
        }

        public IWebDriver WebDriver { get; private set; }
    }

    public class BeforeAllTests
    {
        private readonly IWebDriver objectContainer;
        private static SeleniumContext seleniumContext;

        public BeforeAllTests(IWebDriver container)
        {
            this.objectContainer = objectContainer;
        }

        [BeforeTestRun]
        public static void RunBeforeAllTests()
        {
            seleniumContext = new SeleniumContext();
        }

        [BeforeScenario]
        public static void RunBeforeScenario()
        {
            objectContainer.RegisterInstanceAs<SeleniumContext>(seleniumContext);
        }


        [Then(@"I scroll down")]
        public void ThenIScrollDown()
        {
            ScenarioContext.Current.Pending();
        }




    }
}

严重性代码描述项目文件行抑制状态错误 CS0120 非静态字段、方法或属性“BeforeAllTests.objectContainer”需要对象引用

标签: c#seleniumselenium-chromedriverioc-containerspecflow

解决方案


推荐阅读