Привет всем,
У меня 100 элементов на каждой странице. Есть нумерация страниц. Как я могу пройтись по каждой странице и проверить что у меня есть 100 элементов на каждой странице. Я просто думаю как написать какой-нибудь цикл чтобы это делал.
try {
do {
List < Webelements > list = driver.findElements(“locator”);
assertTrue(list.size(), 100);
driver.findElement(“nextPageButton”).click();
} while (driver.findElement(“nextPageButton”).isEnabled(); )
} catch (NoSuchElementException e) {
syso(“no more pages”);
}
}
може якось так. немає ідешки під рукою, щоб спробувати, але ідея така.
У тебя есть может на python?
та яке, я тільки джаву почав вчитию сорі))
Извени Украинский не понимаю…
только джаву начал учить, пайтона вообще н езнаю
Ок спасибо за ответ…!
На питоне супер просто. Советую юзать не чистый selenium, a Splinter.
Ищешь элемент - тебе отдаёт list.
len(list) - вот тебе и кол-во этих элементов.
Это если конечно нету выпердонов с невидимыми элементами и всяким таким.
А по страницам - цикл. Заходишь, проверяешь, выходишь и пока все не посмотришь.
Я пытаюсь так:
while True:
amount_page = self.browser.find_elements_by_css_selector(".ng-scope>img")
em = len(amount_page)
self.assertEqual(em, 100)
self.wait.until(EC.element_to_be_clickable(
(By.XPATH, ".//*[@id='content']/div/div/div/div/div[1]/div[2]/ul/li[7]/a"))).click()
Проблема что на последней странице есть 87 элементов он выкидывает Exception. Пытаюсь разными способами, то цикл заходит в бесконечный цикл то Exception…
Надо по другому организовать цикл. Условием повторения должна быть активная кнопка следующей страници. Если кнопка неактивная, цикл разрываеться.
do {
…
} while (expression)
Russian also not good…
Так делать очень плохо. Если страницу изменят - твой тест с высокой вероятностью упадёт. Привяжись к классу (если он уникален) любо любому другому идентификатору div, стоящего последним в дереве. И вместо li[7] тоже подбери вменяемый локатор.