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

Вытаскивание объектов из выпадающего списка.

locators
webdriver
Теги: #<Tag:0x00007f7b70b20190> #<Tag:0x00007f7b70b231b0>

(Александр Трофимович) #1

Хотел спросить, смотрите опишу ситуацию. Хочу написать тест который затронет весь функционал, но есть один нюанс, на странице есть выпадающий список, который имеет некоторое количество записей например их там 8 строк. Можно как-нибудь попадая на страницу залесть в элемент выпадающего списка достать от туда все строки которые там есть и с каждым прогоном зациклить, например создалась запись с первым значением из строки, следующий раз опять попал на страницу и создал запись со вторым значением из выпадающего списка и т.д.?


(Andrew Zakordonets) #2

Можно. Было бы проще сделать, если бы вы показали кусок кода вашего дроп дауна, но в целом идея такова:
у вебдрайвера есть два метода findElement и findElements. Второй возвращает список элементов по икспасу или css локатору. По сути вам нужен локатор который будет говорить - “дай мне все элементы из дропдауна с таким то id, name, whatever”. Потом делаете driver.findElements(locator) и проходите по каждому элементу из списка извлекаете аттрибует (element.getAttribute) - это может быть value, может быть label ( зависит от того как у вас реализовано) и сохраняете эти значения в отдельных список. А потом уже цыклите свой тест по списку извлеченнных значений


(Sergey Korol) #3

Во-первых,

так никто не делает. Это бесполезная трата времени, которая принесет вам много головной боли. Тесты должны быть узко направленными и проверять конкретные вещи, а не все подряд.

Да и в целом, основная проблема в том, что вы пытаетесь строить тест, зависимый от данных приложения, полученных в рантайме. Это в корне неверный подход, т.к. такие данные нельзя трактовать, как expeced. А отсюда и результат у вас может быть совсем unexpected. Выбор элемента должен зависеть от предустановленных данных, которые вы, как QA, ожидаете увидеть в рассматриваемом дропдауне, да и в целом - в тестовом сценарии.

Касательно технического вопроса “зацикливания” теста с разными данными: DataProvider - как раз то, что вам нужно для описанного случая. Более того, я бы не рекомендовал перебирать все значения дропдауна. Наверняка данные можно предварительно обработать, используя всем известные техники.


(5am) #4

полностью согласен с @ArtOfLife
по теме:
для обычного селекта, так:

            var driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("https://developer.mozilla.org/ru/docs/Web/HTML/Element/select");
            var element = driver.FindElementByName("select");
            var selectList = new SelectElement(element);
            var options = selectList.Options;

            foreach (var option in options)
            {
                Console.WriteLine(option.Text);
            }

(Александр Трофимович) #5

Спасибо, я вас понял.