Перейти к содержимому

Фотография

Попасть в поле с динамическим ID


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 parsecnet

parsecnet

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 15 мая 2013 - 08:44

Добрый день!
И еще раз про поле с изменяющимся ID. Есть форма, слева названия полей, справа собственно поля. Каждый раз при загрузке полей у них меняется ID, Name итд. Не меняется только названия полей. Требуется ввести текст в поле.
Код, описывающий поле с названием "Название" :)
<tbody id="card-MM-27-new-record-edit-MM-28" class="x-field x-form-item x-field-default x-form-form-item x-form-invalid" 
style="border-width: 0px; table-layout: fixed;">
	<tr id="card-MM-27-new-record-edit-MM-28-inputRow">
		<td id="card-MM-27-new-record-edit-MM-28-labelCell" class="x-field-label-cell" width="105" valign="top" halign="left" style="">
		<label id="card-MM-27-new-record-edit-MM-28-labelEl" class="x-form-item-label x-form-item-label-left" 
		style="width:100px;margin-right:5px;" for="card-MM-27-new-record-edit-MM-28-inputEl">Название:</label>
		</td>
		<td id="card-MM-27-new-record-edit-MM-28-bodyEl" class="x-form-item-body " role="presentation" colspan="2" style="width: 100%;">
		<input id="card-MM-27-new-record-edit-MM-28-inputEl" class="x-form-field x-form-required-field x-form-text x-form-invalid-field" 
		type="text" autocomplete="off" style="width: 100%; -moz-user-select: text;" 
		name="card-MM-27-new-record-edit-MM-28-inputEl" size="1" aria-invalid="true" data-errorqtip="<ul><li>This field is required</li></ul>">
		</td>
	</tr>
</tbody>
Понимаю, что надо как то связать лабел "Название:" с соседним полем input id="card-MM-27-new-record-edit-MM-28-inputEl" с типом "Текст", но не умею. Помогите пожалуйста.
  • 0

#2 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 15 мая 2013 - 09:32

Добрый день!
И еще раз про поле с изменяющимся ID. Есть форма, слева названия полей, справа собственно поля. Каждый раз при загрузке полей у них меняется ID, Name итд. Не меняется только названия полей. Требуется ввести текст в поле.
Код, описывающий поле с названием "Название" :)

<tbody id="card-MM-27-new-record-edit-MM-28" class="x-field x-form-item x-field-default x-form-form-item x-form-invalid" 
style="border-width: 0px; table-layout: fixed;">
	<tr id="card-MM-27-new-record-edit-MM-28-inputRow">
		<td id="card-MM-27-new-record-edit-MM-28-labelCell" class="x-field-label-cell" width="105" valign="top" halign="left" style="">
		<label id="card-MM-27-new-record-edit-MM-28-labelEl" class="x-form-item-label x-form-item-label-left" 
		style="width:100px;margin-right:5px;" for="card-MM-27-new-record-edit-MM-28-inputEl">Название:</label>
		</td>
		<td id="card-MM-27-new-record-edit-MM-28-bodyEl" class="x-form-item-body " role="presentation" colspan="2" style="width: 100%;">
		<input id="card-MM-27-new-record-edit-MM-28-inputEl" class="x-form-field x-form-required-field x-form-text x-form-invalid-field" 
		type="text" autocomplete="off" style="width: 100%; -moz-user-select: text;" 
		name="card-MM-27-new-record-edit-MM-28-inputEl" size="1" aria-invalid="true" data-errorqtip="<ul><li>This field is required</li></ul>">
		</td>
	</tr>
</tbody>
Понимаю, что надо как то связать лабел "Название:" с соседним полем input id="card-MM-27-new-record-edit-MM-28-inputEl" с типом "Текст", но не умею. Помогите пожалуйста.


//label[text()='Название']/parent::td/following-sibling::td/input
  • 1

#3 Krain

Krain

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Ермошкин Сергей

Отправлено 15 мая 2013 - 09:45

Попробуйте использовать xpath:position
Для web-driver должно быть что-то вроде:
driver.findElement(By.xpath("//tr/td[1]")).clear();
driver.findElement(By.xpath("//tr/td[1]")).sendKeys("123");
driver.findElement(By.xpath("//tr/td[2]")).clear();
driver.findElement(By.xpath("//tr/td[2]")).sendKeys("qwe");
Для selenium IDE в формате HTML во вкладке Table меняете Target на xpath:position и все)
  • 0

#4 grinder

grinder

    Новый участник

  • Members
  • Pip
  • 18 сообщений

Отправлено 15 мая 2013 - 10:47

//label[text()='Название']/parent::td/following-sibling::td/input


Ну или более читабельно:

//label[text()='Название:']/../../td/input

  • 0

#5 parsecnet

parsecnet

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 15 мая 2013 - 11:45

//label[text()='Название']/parent::td/following-sibling::td/input


Помогло, спасибо большое!
  • 0

#6 parsecnet

parsecnet

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 17 мая 2013 - 09:47

Прошу помочь с новой проблемой из той же серии.
Код
<tbody>    
	<tr>
		<td id="" class="x-table-layout-cell " rowspan="1" colspan="2">
			<label id="label-1038" class="x-component x-component-default" for="" 
			style="border-width: 0px; background-color: transparent;">Идентификатор</label>
		</td>
	</tr>
	<tr>
		<td id="" class="x-table-layout-cell " rowspan="1" colspan="1">
		<td id="" class="x-table-layout-cell " rowspan="1" colspan="1">
			<table id="filter-MM-30-edit" class="x-field x-form-item x-field-default x-table-form-item x-form-dirty" cellpadding="0" 
			style="border-width: 0px; table-layout: fixed;">
				<tbody>
					<tr id="filter-MM-30-edit-inputRow">
						<td id="filter-MM-30-edit-labelCell" class="x-field-label-cell" 
						width="105" valign="top" halign="left" style="display:none;">
						<td id="filter-MM-30-edit-bodyEl" class="x-form-item-body " 
						role="presentation" colspan="3" style="width: 150px;">
							<input id="filter-MM-30-edit-inputEl" 
							class="x-form-field x-form-text x-form-focus x-field-form-focus x-field-default-form-focus" 
							type="text" autocomplete="off" style="width: 100%; -moz-user-select: text;" 
							name="filter-MM-30-edit-inputEl" size="1" aria-invalid="false" data-errorqtip="">

Требуется связать лабел "Идентификатор" с полем с динамическиv ID <input id="filter-MM-30-edit-inputEl"
  • 0

#7 parsecnet

parsecnet

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 17 мая 2013 - 10:05

сам спросил, сам разобрался! Всем большое спасибо!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных