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

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

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

1 лайк

Во-первых,

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

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

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

2 лайка

полностью согласен с @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);
            }

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