[英]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.