Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Resolved] Проверить множество элементов, используя общий локатор


(Ирина Патиевец) #1

Здравствуйте, помогите, пожалуйста.
Использую WebDriwer +Java
Есть много товарных категорий.
Можно ли проверить их все, использую общий локатор “.b-subcategory__title” Т.е. открыть каждую, проверить есть ли на странице ссылка “Стройка” (она общая), и вернуться на предыдущую страницу.

        @Test
		public void testBlockCatalog()
		{
	init();
	driver.findElement(By.cssSelector(".b-subcategory__title")).click();
	driver.findElement(By.linkText("Стройка"));
	driver.navigate().back();
	}

(Keiga) #2

Если я правильно понял, то у Вас много категорий на странице, значит по данному локатору всегда будет выбран первый элемент.
Значит Вам надо в каждом тесте подсовывать нужный локатор. Значит их надо все куда-то положить, а потом подсовывать тесту например через DataProvider.

Вы конечно можете сделать все в одном тесте(поместить все findElements в один список и потом через цикл по ним бегать), но это будет не правильно.


(Kolesnik Nickolay) #3

Вы можете использовать метод findElements, который вернет массив элементов, находящихся по данному локатору и пройтись по ним в цикле. Что-то типа:

int total = driver.findElements(".b-subcategory__title").length;
for (int i = 0; i < total; i++) {
    driver.findElements(".b-subcategory__title")[i].click();
    driver.findElement(By.linkText("Стройка"));
    driver.navigate().back();
}