Я использую vue.js, чтобы выбрать опцию из списка данных.
Любая идея, как я могу выбрать из списка опций, используя Selenium?
Я могу ввести в поле ввода и выборсписок показывает вверх. Но события ArrowDown, которые я отправляю в поле ввода, не приводят к выбору.
Когда на входе указывается точное совпадение, принимается значение этого уникального параметра, но если я использую частичное совпадение и япопробуйте выбрать опцию, я не могу перейти к нужной мне опции. Похоже, список опций находится не в фокусе, и отправка ArrowDown enevt на вход не приводит к выбору опций. Я попытался отложить ключевое событие, думая, что список опций требует времени для рендеринга и стать интерактивным, я также попытался объединить несколько событий ArrowDown и Enter. Ничего не работает.
Это мой шаблон vue.js:
<datalist id="allUsers">
<option v-for="user in $parent.users" :label="user.fullName + ' (' + user.email + ')' " :value="user.email">{{user.fullName}} - {{user.email}}</option>
</datalist>
<input class="form-control" name="UserEmail" type="email" list="allUsers" id="selectedEmail" v-on:change="updateEmail($event.target.value)" :value="selectedEmail">
Вот что я вижу в браузере (HTML):
<datalist id="allUsers">
<option label="UserA (a@mailinator.com)" value="a@mailinator.com">UserA - a@mailinator.com</option>
<option label="UserB (b@mailinator.com)" value="b@mailinator.com">UserB - b@mailinator.com</option>
</datalist>
<input name="User" type="text" list="allUsers" id="selectedEmail" class="form-control">
С селеном яУспешно отфильтровать параметры:
IWebElement uiElement = null;
uiElement = driver.FindElement(By.Id("selectedOption"));
uiElement.Clear();
uiElement.SendKeys("UserA");
Thread.Sleep(500);
Пока все в порядке. Раскрывающийся список содержит только мой вариант. Но из-за привязки он не выбран. Я ожидал, что этот код будет работать, но он не дает мне список отображаемых параметров.
var optionsElements = uiElement.FindElements(By.TagName("option"));
TestContext.Log(TestContext.LoggingAbstractionType.SeleniumInterface, "Have " + optionsElements.Count + " options!");
if(optionsElements.Count > 0)
{
optionsElements[0].Click();
}