Хобрук: Ваш путь к мастерству в программировании

Исключение при получении xpath к веб-элементу: org.openqa.selenium.support.ui.UnexpectedTagNameException: элемент должен был быть выбран, но был

В нем есть раскрывающийся список с 9 вариантами, все типа якоря (а). Выбор параметра из списка динамически изменяет его класс и другие атрибуты.

Вот как выглядит html-код:

<select data_old_value="Email" id="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843" name="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843" onchange="RuleWizardIns.RuleActionChanged($(this))" style="width: 103px !important; height: auto !important; display: none;" aria-disabled="false"><option value="Email" selected="selected">Send Email</option><option value="TaskCreate">Create Task</option><option value="AddActivity">Add Activity</option><option value="AddToList">Add To List</option><option value="LeadUpdate">Update Lead Fields</option><option value="TagLead">Tag Lead</option><option value="StarLead">Star Lead</option><option value="UnStarLead">Unstar Lead</option><option value="Webhook">Call Webhook</option></select>
    <option value="Email" selected="selected">Send Email</option>
    <option value="TaskCreate">Create Task</option>
    <option value="AddActivity">Add Activity</option>
    <option value="AddToList">Add To List</option>
    <option value="LeadUpdate">Update Lead Fields</option>
    <option value="TagLead">Tag Lead</option>
    <option value="StarLead">Star Lead</option>
    <option value="UnStarLead">Unstar Lead</option>
    \<option value="Webhook">Call Webhook</option>
</select>
<span>
    <a class="ui-selectmenu ui-widget ui-state-default ui-corner-all ui-selectmenu-dropdown" id="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843-button" role="button" href="#nogo" tabindex="0" aria-haspopup="true" aria-owns="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843-menu" style="width: 103px;" aria-disabled="false"><span class="ui-selectmenu-status">Send Email</span><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span></a>
        <span class="ui-selectmenu-status">Send Email</span>
        <span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span>
    </a>
</span>

Я попытался получить контроль над параметром Обновить поля потенциальных клиентов, используя приведенный ниже код, но, к сожалению, он не работает.

Select ActionType = new Select(driver.findElement(By.xpath("//select[@data_old_value='Email']/following-sibling::span/a")));        
ActionType.selectByVisibleText("Update Lead Fields");

Я получаю ошибку ниже:

org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "a"

И нет пользовательского интерфейса для атрибута select, как вы можете видеть на изображении ниже:

https://d24cdstip7q8pz.cloudfront.net/t/t/t20170511180558/content/common/images/Untitled.png


  • HTML, которым вы поделились, неверен. Вы закрыли второй тег <select>, у которого нет начальной точки. 19.03.2018

Ответы:


1

Объект Select может быть создан только путем получения WebElement с тегом «выбрать», о чем идет речь в сообщении об ошибке. Я создал пример C#, который я протестировал, и дал ожидаемый результат.

Driver.Url = ("https://developer.mozilla.org/en-
US/docs/Web/HTML/Element/select");

var valuesSelectElement = Driver.FindElement(By.Name("select"));
var selectElement = new SelectElement(valuesSelectElement);
// To select an option by value
selectElement.SelectByValue("value1");
// To select an option by text
selectElement.SelectByText("Value 2");
var options = selectElement.Options;
//To click on one of the options
foreach (var option in options)
{
     if (option.Text.Equals("Value 3"))
     {
         option.Click();
     }
}
18.03.2018
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..