Home > Blockchain >  call a method from another file c#
call a method from another file c#

Time:10-25

I'm new to selenium webdriver and the programming world.

I'm creating several tests in visual studio, and most of them will have a few steps that will be the same functions, for example Login function.

I put this function in a public void according to the code below

public void Login()
{
    IWebElement inputUsuario = driver.FindElement(By.XPath("//input[@id='username']"));
    inputUsuario.SendKeys("pablo@qms");

    IWebElement inputSenha = driver.FindElement(By.XPath("//input[@id='password']"));
    inputSenha.SendKeys("5550123!");

    IWebElement botaoEntrar = driver.FindElement(By.XPath("//div[@class='full-container']"));
    botaoEntrar.Click();
    Thread.Sleep(2000);

    IWebElement agenda = driver.FindElement(By.XPath("//h3[normalize-space()='Agenda']"));
    agenda.Equals("Agenda");
    Assert.Contains("Agenda", driver.PageSource);
}

Now I would like to call this function in another test in the same project, without having to rewrite all the code Can you help me to do this?

CodePudding user response:

If the method is in a class the answer should be:

ClassName.Login();

CodePudding user response:

C# does not have stand-alone functions, the only place you will see a function outside of a class (as far as I´m aware) are in top-level statements, which are just syntax sugar that is wrapped into a static class by the compiler and are most likely not a solution to your issue.

You should put your function either into a static class

static class LoginHelper{
    public static void Login(Webdriver drive) //not sure about the class name of driver here
    {
        //login code
    }
}

or better yet, use a proper object oriented approach

abstract class BaseTest{
    Webdriver driver;
    public BaseTest(Webdriver driver)
    {
       this.driver = driver;
    }
    public void Login()
    {
        //login code
    }
    public abstract void RunTests();
}

class Test1 : BaseTest
{
    public Test1(Webdriver driver) : base(driver)
    {
    }
    public void SomeTest()
    {
        //define additional Tests
    }
    public override void RunTests(){
        Login();
        SomeTest();
    }
}
  • Related