Как задать значение для поля ввода Dynami c, используя селен python - PullRequest
0 голосов
/ 24 февраля 2020

Мне нужно передать значение в Dynami c Поле ввода, которое имеет Dynami c ID. Мой код:

<table id="combobox-1281-triggerWrap" class="x-form-trigger-wrap" cellpadding="0" cellspacing="0" style="width: 100%; table-layout: fixed;">
<tbody><tr>
<td id="combobox-1281-inputCell" class="x-form-trigger-input-cell" style="width: 100%;">
<input id="combobox-1281-inputEl" type="text" role="combobox" class="x-form-field x-form-text x-form-focus x-field-form-focus x-field-default-form-focus" autocomplete="off" name="combobox-1281-inputEl" style="width: 100%;">
<div class="x-hide-display x-form-data-hidden" role="presentation" id="ext-gen1728"></div></td>
<td role="presentation" id="combobox-1281-sideErrorCell" width="22" style="display: none;">
<div role="presentation" id="combobox-1281-errorEl" class="x-form-invalid-icon x-form-invalid-icon-focus" style="display:none">
</div></td>
<td role="presentation" valign="top" class=" x-trigger-cell x-unselectable" style="width:28px;" id="ext-gen1727">
<div class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first rp-icon-expanded" role="presentation" id="ext-gen1726"></div>
</td></tr>
</tbody></table>

Здесь "combobox-1281-inputEl" => 1281 создается динамически и имя класса также не уникально, как задать значение для этого поля ввода.

1 Ответ

0 голосов
/ 24 февраля 2020

Ищите частичный атрибут id, который начинается с combobox- и заканчивается -inputEl. Вы можете получить его от родителя <td>

driver.find_element_by_css_selector('[id^="combobox-"][id$="-inputCell"] > [id^="combobox-"][id$="-inputEl"]')

Вы также можете извлечь часть Dynami c и использовать ее для поиска других элементов

table = driver.find_element_by_css_selector('[id^="combobox-"][id$="-inputCell"]')
number = table.get_attribute('id').split('-')[1]
driver.find_element_by_id(f'combobox-{number}-inputEl')
...