I'm writing a program/tests in C# using Selenium and Chrome web driver. Everything works well, however I would like to simplify the code and make it object-oriented. I thought about extracting some parts of the code to different classes, and perhaps refactor the area of driver.FindElement... by using it only one time with different arguments.Any suggestions?private static void FillingForms(IWebDriver driver){    driver.FindElement(By.XPath(//*[@id='payoutMethods']/label[1])).Click();    driver.FindElement(By.Id(SignUpButton)).Click();    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));    driver.FindElement(By.Id(accountType_Company)).Click();    driver.FindElement(By.Id(txtCompanyName)).SendKeys(Albertos Example);    var mySelectElm = driver.FindElement(By.Id(ddlBusinessOrganization));    var mySelect = new SelectElement(mySelectElm);    mySelect.SelectByText(Trust Company);    driver.FindElement(By.Id(txtCompanyURL)).SendKeys(www.examplewebsite.com);    driver.FindElement(By.Id(txtContactPersonFirstName)).SendKeys(11 Name);    driver.FindElement(By.Id(txtContactPersonLastName)).SendKeys(11 Last Name);    var email = Guid.NewGuid().ToString(n).Substring(0, 5);    driver.FindElement(By.Id(txtEmail)).SendKeys(email + @gmail.com);    driver.FindElement(By.Id(txtRetypeEmail)).SendKeys(email + @gmail.com);    driver.FindElement(By.Id(datepicker)).Click();    var mySelectElm1 = driver.FindElement(By.XPath(//*[@id='ui-datepicker-div']/div/div/select[2]));    var mySelect1 = new SelectElement(mySelectElm1);    mySelect1.SelectByText(1988);    driver.FindElement(By.XPath(//*[@id='ui-datepicker-div']/table/tbody/tr[2]/td[3]/a)).Click();    driver.FindElement(By.Id(PersonalDetailsButton)).Click();}
Select fields from a form by ID or Xpath and fill its value
c#;selenium;webdriver