声明公共IWebBrowser以跨函数访问

问题描述 投票:0回答:1

我希望能够调用方法,但不确定如何贴我的 IWebDriver?

public class xxxx
{

   [TestMethod]
   public void xxxx()
    {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("");

     
    }
      
    public void xxxx()
    {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("");

       
    }
   
    public void xxxx()
     {




     }

我必须为每个方法调用网络驱动程序,但这每次都会打开不同的浏览器。我是否需要在类中将 Web 驱动程序设置为公共,然后按方法调用它?

尝试将 IWebDriver 设置为公共,然后为每个方法创建一个 var,但不确定如何编写

c# selenium-webdriver automation webdriver
1个回答
0
投票

[TestMethod]
属性让我相信您正在使用 MS Test 作为单元测试提供商。如果这是不正确的,我可以修改我的答案。


我发现所有测试的通用基类是初始化 Web 驱动程序的有用位置:

public abstract class SeleniumTest
{
    private IWebDriver driver;

    protected IWebDriver Driver
    {
        get
        {
            if (driver == null)
            {
                driver = new ChromeDriver();
            }
        }
    }

    [TestCleanup]
    public void DestroyDriver()
    {
        if (driver != null)
        {
            driver.Quit();
            driver.Dispose();
            driver = null;
        }
    }
}

使用它意味着从这个公共基类派生你的测试类:

[TestClass]
public class YourTest : SeleniumTest
{                     ^^^^^^^^^^^^^^
    [TestMethod]
    public void SomeTest()
    {
        Driver.Navigate.GoToUrl("...");
    }   ^^^^^^
}

这种方法的好处是,您可以通过调用

Driver
属性来延迟初始化 Web 驱动程序。在需要浏览器窗口之前失败的测试会失败得更快,因为它们不需要等待浏览器窗口打开只是为了找出某些数据库设置例程失败。诀窍是使用
[TestCleanup]
方法退出并处置驱动程序(如果已创建)。

© www.soinside.com 2019 - 2024. All rights reserved.