Для моего автоматического теста с использованием селена в C # я хочу выбрать элемент раскрывающегося списка (любой) из поля type (см. Прикрепленное изображение), однако, так как идентификатор / xpath для выбранного элемента полученгенерируется динамически при каждой загрузке страницы, щелчок выбранного элемента не выполняется, когда я запускаю записанный скрипт.
Например, мой скрипт ниже не работает, как XPath "// select [@ name = 'Entries [ db9ef219-0f54-4925-9589-0f39351f44a4 ] .TypeID '] "меняется каждый раз, когда я запускаю тест в VS.Net.Значение db9ef219-0f54-4925-9589-0f39351f44a4 изменяется каждый раз при загрузке страницы.
IWebElement selectType =
driver.FindElement(By.XPath("//select[@name='Entries[db9ef219-0f54-4925-9589-0f39351f44a4].TypeID']"));
selectType.Click();
Вот код страницы - при загрузке для каждой новой строки генерируется уникальное значение (ниже его c36582c1-131a-4f6f-8711-390048f5779f ) и сохраняется в классе RegEffEntryContainer , и используется для каждого элемента списка - тип / описание (например, id = "Entries_c36582c1-131a-4f6f-8711-390048f5779f__TypeID", id = "Entries_c36582c1-131a-4f6f-8711-39f_ffff 8711-39f_ff) f0ff 8711-39fff*
Любая помощь в решении этой проблемы будет принята с благодарностью - заранее спасибо!
FYI : Если я используюВ приведенном ниже коде, использующем Dynamic XPath, он будет работать только для первой строки, и я не смог бы записать любые последующие записи строки через скрипт.Требуется ввести все 3 заявки, прежде чем нажать кнопку Сохранить / Отправить (не показано на снимке экрана выше).
IWebElement selectType = driver.FindElement(By.XPath("//select[contains(@id, '__TypeID')]"));
Спасибо @ JeffC за ваше предложение- добавив HTML-код, как было предложено - я все еще сохранил изображение кода, предоставленное ранее.
<div class="RegEffEntryContainer" xpath="1">
<div class="row">
<div class="col-11">
<input type="hidden" name="Entries.index" autocomplete="off" value="21b28f6b-8aaa-4924-815a-1d925585fa36">
<input data-val="true" data-val-number="The field EntryID must be a number." data-val-required="The EntryID field is required." id="Entries_21b28f6b-8aaa-4924-815a-1d925585fa36__EntryID" name="Entries[21b28f6b-8aaa-4924-815a-1d925585fa36].EntryID" type="hidden" value="391">
<div class="row">
<div class="col-12 col-sm-6 col-lg-3">
<div class="field-wrapper">
<select class="form-control valid" data-val="true" data-val-number="The field TypeID must be a number." id="Entries_21b28f6b-8aaa-4924-815a-1d925585fa36__TypeID" name="Entries[21b28f6b-8aaa-4924-815a-1d925585fa36].TypeID" required="" aria-describedby="Entries_21b28f6b-8aaa-4924-815a-1d925585fa36__TypeID-error" aria-invalid="false">
<option value="">Select type</option>
<option value="1">Regulatory Activity</option>
<option value="2">Major Project</option>
<option value="3">Other Activities</option>
</select><span class="asterisk">*</span>
</div>
</div>
Обновление [27/02/2019 19:00] - начиная с числового идентификатора ( значение: 21b28f6b-8aaa-4924-815a-1d925585fa36 выше) используется для TypeID / OrganisationID создается динамически при загрузке страницы, есть ли способ с помощью Javascript записать это в переменную при загрузке страницы и повторно использовать это для создания XPath для идентификации элемента позже?