Хотел спросить, смотрите опишу ситуацию. Хочу написать тест который затронет весь функционал, но есть один нюанс, на странице есть выпадающий список, который имеет некоторое количество записей например их там 8 строк. Можно как-нибудь попадая на страницу залесть в элемент выпадающего списка достать от туда все строки которые там есть и с каждым прогоном зациклить, например создалась запись с первым значением из строки, следующий раз опять попал на страницу и создал запись со вторым значением из выпадающего списка и т.д.?
Можно. Было бы проще сделать, если бы вы показали кусок кода вашего дроп дауна, но в целом идея такова:
у вебдрайвера есть два метода findElement и findElements. Второй возвращает список элементов по икспасу или css локатору. По сути вам нужен локатор который будет говорить - “дай мне все элементы из дропдауна с таким то id, name, whatever”. Потом делаете driver.findElements(locator) и проходите по каждому элементу из списка извлекаете аттрибует (element.getAttribute) - это может быть value, может быть label ( зависит от того как у вас реализовано) и сохраняете эти значения в отдельных список. А потом уже цыклите свой тест по списку извлеченнных значений
Во-первых,
так никто не делает. Это бесполезная трата времени, которая принесет вам много головной боли. Тесты должны быть узко направленными и проверять конкретные вещи, а не все подряд.
Да и в целом, основная проблема в том, что вы пытаетесь строить тест, зависимый от данных приложения, полученных в рантайме. Это в корне неверный подход, т.к. такие данные нельзя трактовать, как expeced. А отсюда и результат у вас может быть совсем unexpected. Выбор элемента должен зависеть от предустановленных данных, которые вы, как QA, ожидаете увидеть в рассматриваемом дропдауне, да и в целом - в тестовом сценарии.
Касательно технического вопроса “зацикливания” теста с разными данными: DataProvider
- как раз то, что вам нужно для описанного случая. Более того, я бы не рекомендовал перебирать все значения дропдауна. Наверняка данные можно предварительно обработать, используя всем известные техники.
полностью согласен с @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);
}
Спасибо, я вас понял.