Спасибо за помощь @sidelnikovmike решение было совсем простым
Так и так, решение проблемы “Завершение профиля webdriver”, если вам нужно чтобы после выполнения действий одного класса дальше продолжали выполняться действия других классов, иначе говоря исполнение сложных сценариев, вам потребуется:
Создайте класс определены все объекты и переменные которые вам потребуются в других классах (чтобы не плодить повторяющиеся строки)
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BeforeTest {
public WebDriver driver;
public String username;
public String password;
WebElement campaignInputBox, userInputBox, passInputBox;
Далее пишем такую очень важную и простую конструкцию 
public BeforeTest(){
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
Ну и остальные методы которые будут использоваться у вас, например:
public boolean isElementPresent(By by) {
try {
driver.findElements(by);
return true;
} catch (org.openqa.selenium.NoSuchElementException e) {
return false;
}
}
В другом классе пишете такое:
import static org.junit.Assert.*;
import org.openqa.selenium.By;
import java.util.concurrent.TimeUnit;
//Наследование от нужного класса, где описано создание драйвера, соответствующие методы, объекты и переменные
public class Authorization extends BeforeTest{
public Authorization(){
this.username = "asd@asd.asd";
this.password = "111111";
}
public void authorization() throws Exception {
driver.get ("http://site.com/");
driver.findElement(By.linkText("login")).click();
userInputBox = driver.findElement(By.id("email"));
passInputBox = driver.findElement(By.id("password"));
//Type fields
userInputBox.sendKeys(username);
passInputBox.sendKeys(password);
driver.findElement(By.cssSelector("input.btn.btn-primary")).click();
}
}
В классе который должен далее выполнять действия над сайтом, пишем наследование от соответствующего класса и вызываем его метод. В моём случае я наследуюсь от класса Authorization и вызываю его метод authorization(). Класс будет выглядеть примерно так:
import org.openqa.selenium.By;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.fail;
public class CreateNewCampaign extends Authorization {
public void newCampaign() throws Exception {
authorization(); //вызываем соответствующий метод класса Authorization
driver.findElement(By.linkText("New Campaign")).click();
И далее описываем дальнейшие действия:
while (valueOfScenario < 5) {
campaignName = "campaign name" + valueOfScenario;
switch (valueOfScenario) {
case 1:
driver.findElement(By.id("daily-lim")).click();
driver.findElement(By.name("daily_price_value")).clear();
driver.findElement(By.name("daily_price_value")).sendKeys("100");
case 2:
driver.findElement(By.id("campaign-lim")).click();
driver.findElement(By.name("campaign_price_value")).clear();
driver.findElement(By.name("campaign_price_value")).sendKeys("10000");
campaignInputBox = driver.findElement(By.id("campaign_name"));
campaignInputBox.sendKeys(campaignName);
valueOfScenario += 1;
driver.findElement(By.cssSelector("button.btn.btn-primary")).click();
for (int second = 0; ; second++) {
if (second >= 60) fail("timeout");
try {
if (isElementPresent(By.linkText("New Campaign"))) break;
} catch (Exception e) {
return;
}
Thread.sleep(1000);
}
driver.findElement(By.linkText("New Campaign")).click();
break;
case 3:
driver.findElement(By.id("daily-lim")).click();
driver.findElement(By.name("daily_price_value")).clear();
driver.findElement(By.name("daily_price_value")).sendKeys("100");
case 4:
valueOfScenario += 1;
campaignInputBox = driver.findElement(By.id("campaign_name"));
campaignInputBox.sendKeys(campaignName);
driver.findElement(By.cssSelector("button.btn.btn-primary")).click();
for (int second = 0; ; second++) {
if (second >= 60) fail("timeout");
try {
if (isElementPresent(By.linkText("New Campaign"))) break;
} catch (Exception e) {
return;
}
Thread.sleep(1000);
}
driver.findElement(By.linkText("New Campaign")).click();
break;
}
}
}
Ну и самое главное запуск нашей магии. Создаём ещё один класс, с помощью которого запускаем магию:
import org.junit.Test;
public class Tests {
CreateNewCampaign create; // класс с последними действиями
@Test
public void startTest() throws Exception {
create = new CreateNewCampaign(); //выделяем память
create.newCampaign(); //вызываем метод
}
}
Ну вот как-то так корявенько я это сделал. Далее я буду объединять большое количество классов , проблемы которые будут выявляться дальше, буду описывать в этой или в другом посте со ссылкой на этот.
Буду очень благодарен кто тыкнет пальцем где я слишком извращённо написал код 
P.S. это мой первый опыт в разработке кода на JAVA