繁体   English   中英

如何在与其他文件不同的类中使用方法?

[英]How do I use a method in a different class from a different file?

我有一个类文件,希望通过调用方法从不同的类文件生成一些测试数据。 现在,我的generatetestdata类文件继承了应用程序的启动部分,即打开浏览器,登录,执行操作然后注销。 这适用于我所有的脚本:TestBase它的调用。 在我的generatetestdata中,我创建了一个方法来简单地生成多个车辆,方法名称为MultipleAddVehicle();。 从另一个类,但它给我一个错误,在当前上下文中不存在。 我要去哪里错了? 我已经包含了所有脚本都继承应用程序启动和拆卸的代码,问题所在的generatetestdata以及方法MultipleAddVehicle();的代码。

这是启动脚本类文件,所有我的类文件都将继承启动。

public class TestBase
    {

        public IWebDriver driver;
        public clsCommon objCommon;
        public UserSetttingsRep _userSetRepo;
        public VechRep _vechRep;
        //public TC04_VehicleMgt childclassinstance;

        [TestInitialize]
        public void BaseTestInit()
        {
            // create chrome driver
            driver = new ChromeDriver(".");
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(45);
            driver.Manage().Window.Maximize();

            // create class for commonly used components / functions
            objCommon = new clsCommon(driver);
            _userSetRepo = new UserSetttingsRep(driver);

            LoginAndSelectAutomationFleet();
            //GenerationTestData();
        }

        public void LoginAndSelectAutomationFleet()
        {
            // login the user
            objCommon.loginVT(driver);
            System.Threading.Thread.Sleep(3000);

            Actions builder = new Actions(driver);
            builder.MoveToElement(_userSetRepo.userIcon).Click().Build().Perform(); //Hover on System 

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(UserSetttingsRep.InputOrganisationSelector)));

            objCommon.SendKeysAndClickTab(_userSetRepo.inputOrgansiation, "M-Powered Automation", driver);
            wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.XPath(UserSetttingsRep.InputOrganisationSelector)));
        }


        [TestCleanup]
        public void TestCleanUp()
        {
            driver.Quit();
            objCommon.ValidateResult();
        }
    }
}

这是测试方法MultipleAddVehicle(); 我想跑步。

public void MultipleAddVehicle()
        {
            // loginVT();//Login to site
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            Actions builder = new Actions(driver);
            builder.MoveToElement(_regRep.SystemIcon).Click().Build().Perform(); //Hower on System       }

            System.Threading.Thread.Sleep(8000);
            _vechRep.VehicleMgmtLink.Click();
            (_vechRep.fleetDropDownMenu, "Fleetddd", driver);
            string[] array = { "AK12 OLX", "FN53 KTO", "OU03 TGX", "BF14 YDS" };
            // Loop with foreach and write colors with string interpolation.
            foreach (string VRN in array)
            {
                System.Threading.Thread.Sleep(5000);
                _vechRep.AddNewVehicle.Click();
                _vechRep.VRNSearch.SendKeys(VRN);
                _vechRep.FindVehicle.Click();
                System.Threading.Thread.Sleep(2000);
                _vechRep.VehicleTypeOption.SendKeys("Car");
                _vechRep.VehicleTypeOption.SendKeys(Keys.Tab);
                System.Threading.Thread.Sleep(1000);
                _vechRep.VehicleColor.SendKeys("Red");
                _vechRep.btnAddVehicle.Click();
                System.Threading.Thread.Sleep(2000);
                try
                {
                    if (_vechRep.VehicleAddSuccessMsg.Displayed)
                    {
                        Console.WriteLine("Vehicle is successfuly added");
                    }
                }
                catch
                {
                    Console.WriteLine("Vehicle is NOT added");
                    Assert.Fail();
                }
            }
        }

最后这是我的generatetestdata,其中MultipleAddVehicle(); 失败:

[TestClass]
    public class GenerateTestData : TestBase
    {
        public HealthRep _healthRep;
        public UserRegRep _regRep;


        [TestInitialize]
        public void Setup()
        {
            _regRep = new UserRegRep(driver);
            _healthRep = new HealthRep(driver);

        }
        [TestMethod]
        public void AddMultipleVehiclesToApp()
        {
            MultipleAddVehicle();
        }
    }
}

您需要创建第二个类的对象,然后调用方法:

[TestMethod]
public void AddMultipleVehiclesToApp()
{
    var vehicleMgt = new TC04_VehicleMgt();
    vehicleMgt.MultipleAddVehicle(); 
}

或者,如果您想使用实例变量:

[TestMethod]
public void AddMultipleVehiclesToApp()
{
    this.childclassinstance = new TC04_VehicleMgt();
    this.childclassinstance.MultipleAddVehicle(); 
}

并取消注释:

public TC04_VehicleMgt childclassinstance;

您可能还需要将_vechRep从一个类传递到另一个。 如果是这样,请考虑在构造函数中进行设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM