2015-06-15 2 views
2

У меня есть следующий HTML текст:TestComplete нажмите на Checkbox с помощью Xpath

<tr class="off" onmouseout="this.className='off'"onmouseover="this.className='over'"> 
<td><input type="checkbox" name="caller_enrollment_form:enrollmentParticipantSelectionTable:0:personSelecti‌​on" id="caller_enrollment_form:enrollmentParticipantSelectionTable:0:personSelection‌​" value="true" /> 
</td> 
<td><span id="caller_enrollment_form:enrollmentParticipantSelectionTable:0:extClientId">11‌​1</span> 
</td> 
<td><span id="caller_enrollment_form:enrollmentParticipantSelectionTable:0:clientName">SAM‌​UEL</span> 
</td> 

я пытаюсь нажать на флажок, который имеет данные 111 в той же строке.

Я пытаюсь что-то вроде этого:

page.FindChildByXPath ("// диапазон [содержит (текст(), '111')]/родитель :: тд/предшествующее-родственный :: тд/вход [@ имя = 'caller_enrollment_form: enrollmentParticipantSelectionTable: 0: personSelection']», ложь)

но я получаю объект не найден.

+0

Добро пожаловать в StackOverflow. Я объединил ваш HTML в вопрос и добавил еще несколько подходящих тегов. Вы можете добавить вещи для улучшения деталей в вопросе, нажав кнопку [edit], как я. Надеюсь, ты найдешь свой ответ. –

ответ

0

Ваш checkox имеет идентификатор, а идентификаторы уникальны на странице. Таким образом, вы можете использовать:

// JScript 
var checkBox = page.FindChildByXPath("//input[@id='caller_enrollment_form:enrollmentParticipantSelectionTable:0:personSelection‌​']"); 
checkBox.ClickChecked(true); // Check the checkbox 

Идентификатор содержит номер (0); Вы можете использовать переменную, чтобы указать этот номер:

var checkBox = page.FindChildByXPath("//input[@id='caller_enrollment_form:enrollmentParticipantSelectionTable:" + index + ":personSelection‌​']"); 


Если конкретно необходимо определить по тексту «111», вы можете использовать что-то вроде этого:

var checkBox = page.FindChildByXPath("//tr[td/span[.='111']]/td/input"); 
checkBox.ClickChecked(true); // Check the checkbox 

Вы также можете использовать переменная вместо "111":

var checkBox = page.FindChildByXPath("//tr[td/span[.='" + text + "']]/td/input"); 

XPath объяснение:

//tr     - find a table row 
    [     - that matches this condition: 
     td/span[.='111'] - any of the row's cells contains a SPAN with the text '111' 
    ] 
         - then in this row 
/td/input    - find an INPUT in any cell 
+0

Спасибо Хелен ... Мне жаль, что я не смогу использовать первый ответ, но число 0 в Идентификаторе продолжает меняться ... Это номер строки. Есть ли способ, которым я мог бы добавить индекс строки в том, что я сделал бы поле - что-то вроде 'абонент ... + RowIndex + ': personSelection' ?? Я попробую второй вариант и посмотрю. Цените ур помощь – test

+0

Я попробовал второй вариант. Здесь также для каждого запуска меня изменяет текст диапазона в следующий раз. Итак, как мне вставить динамические значения внутри функции FindChildByXPath? – test

+1

Спасибо Хелен .. Я получил его для работы с: FindChildByXPath ("// tr [td/span [. = '" + CIN + "']]/td/input"); Можете ли вы объяснить, что он делает? – test

Смежные вопросы