Есть классы:
public class ContainerMainMethods { }
здесь описана инициализация вебдрайвера и главные методы типа: кликнуть на определённые элементы страницы, ввести в поле ввода, ожидание появления элемента
public class ContainerForSecond_Page extends ContainerMainMethods { }
здесь описаны методы по работе с блоками страницы, используя методы от класса “ContainerMainMethods”
public class ContainerForTrird_Page extends ContainerMainMethods { }
здесь описаны методы по работе с блоками страницы, используя методы от класса “ContainerMainMethods”
public class StartCreation extends ContainerMainMethods { }
В этом классе описана последовательность выполнения требуемого сценария
public class First_Page extends ContainerMainMethods {}
public class Second_Page extends ContainerForSecond_Page {}
public class Third_Page extends ContainerForThird_Page {}
В этих классах используются методы из контейнеров для выполнения заданных сценариев в определённой последовательности
Суть проблемы: Первую страницу тест проходит положительно, всё нормально кликается, всё нормально заполняется. Затем вызывается класс “Second_Page” использующий методы класса “ContainerForSecond_Page” и возникают проблемы с кликами по объектам сайта (buttons, radio buttons, checkboxes), после нескольких кликов на странице, происходит клик на главные вкладки сайта (любую из вкладок) - хотя я не описывал эти действия.
Мои методы:
public class ContainerMainMethods {
public static void setUp() throws Exception{
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setJavascriptEnabled(true);
driver = new FirefoxDriver(capabilities);
driver.get("http://trafficapp.softproject.com.ua/");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
protected static void clickOn(String selectId) { //все методы статические
driver.findElement(By.id(selectId)).click();
}
protected static void fillField (String idField, String valueField) {
driver.findElement(By.name(idField)).clear();
driver.findElement(By.id(idField)).sendKeys(valueField);
}
Эти и другие методы использую в следующих классах:
public class ContainerForAdGroup_Page extends ContainerMainMethods {
public static void choiceAdGroupType() throws Exception { //все методы статические
int typeOfAdGroupType = (int) (Math.random() * 1);
if (typeOfAdGroupType == 0) { //choice PPR or CPC
clickOn("ct" + typeOfAdGroupType); //choice PPR
} else clickOn("ct" + typeOfAdGroupType); //choice CPC
}
public static void choiceTypeOfTraffic() throws Exception{
int idOfTraffic = (int) (Math.random() * 4); //By keyword, By Category, By RON, By Domain ID
clickOn("traf_key_" + 1);
}
**public static void choiceCountries() throws Exception{**
int amountOfCountries = (int) (Math.random() * 215); //amount for select Countries
for (int iteration = 0; iteration < amountOfCountries; iteration++) //choice countries
{ System.out.print("ok");
int numberOfCountry = (int) (Math.random() * 215 + 1);
clickOnXpath("/html/body/div/div[1]/div/div/...[" + numberOfCountry + "]"); // все страны прокликиваются/выбираются
} //затем
clickOn("add_countries_btn"); //клик по этой кнопке не происходит, происходит магия - происходит клик на одну из главных вкладок страницы, затем происходит поиск соответствующей кнопки, но она не может быть найдена, т.к. страница уже поменялась
Последующие методы не выполняются, т.к. страница поменялась
Пробовал не использовать описанные мной методы (клик, заполнить) - всё равно кликаются не нужные вкладки.
Возможно коряво описал. Могу скинуть весь код
public class StartCreateCampaigns extends ContainerMainMethods {
NewCampaign_Page firstStep = new NewCampaign_Page();
Second_Page secondStep = new Second_Page();
Third_Page thirdStep = new Third_Page();
@Test
public void startCreation() throws Exception {
setUp();
clickOnTab("login");
fillField("email", "asd@asd.asd");
fillField("password", "111111");
loginOnSite();
clickOnTab("New Campaign");
firstStep.createNewCampaign();
secondStep.createNewAdGroup();
thirdStep.addTargets();
fourthStep.finishAction();
}
}