2012-03-17 3 views
4

Я использую Selenium IDE 1.7.1, чтобы установить флажок, соответствующий счету # 405357. Css, похоже, позволяет мне двигаться вперед при выборе элемента, но не назад. Так это будет выбрать $ 420:Выбор элемента в той же строке, что и конкретный текст

css=td:contains('405357') + td 

Любые идеи для временного решения для того, чтобы выбрать флажок? В идеале обходной путь не предполагает движение назад или вперед, но было бы просто сказать, установите флажок

css=input#paymentsForm_invoiceToPayIds if td:contains('405357') 

Я бы предпочел, чтобы это было в CSS, но XPath будет слишком хорошо.

Спасибо!

enter image description here

<table> 
<tbody> 
<tr> 
<td> 
<input id="paymentsForm_invoiceToPayIds" type="checkbox" onclick="calculateInvoices(this)" value="405357" name="invoiceToPayIds"> 
<input id="__checkbox_paymentsForm_invoiceToPayIds" type="hidden" value="405357" name="__checkbox_invoiceToPayIds"> 
</td> 
<td>405357</td> 
</tr> 
</tbody> 
</table> 
+0

Будьте осторожны - в то время как у вас может быть несколько флажков с одинаковыми именами для их группировки, каждый из них должен иметь свой собственный уникальный идентификатор. Просто придерживаться идентификатора счета в конце каждого идентификатора флажка должен делать трюк. – BoltClock

ответ

5

Я считаю :contains() работы для родителей tr тоже. Попробуйте это:

css=tr:contains('405357') input[type="checkbox"] 
+0

Sweeet - именно то, что я искал. Это будет работать, даже если идентификатор счета # не находится в атрибутах флажка. – gorbysbm

0
//input[@type='checkbox' and @value="405357"] 

попробовать это один

+0

Нет кубиков - флажок - это первый элемент ввода, а второй со значением - второй. –

+0

Эй, Росс, только Fyi, но код Rohit также работает и правильно выбирает флажок. – gorbysbm

+0

Как это работает, тогда проголосуйте за человека: P –

2

Вы не можете сделать это в реальной CSS, так как реальный CSS не :contains. Но в XPath это просто: //tr[//input[@value="405357"]]//input[@type="checkbox"], что означает «Флажок, содержащийся в строке таблицы, который содержит поле ввода со значением« 405357 ».

+0

Собственно, [CSS * used * иметь ': contains()'] (http: //stackoverflow.com/questions/4781141/why-h3nth-child1containsa-selector-doesnt-work/4781167#4781167), затем он упал, но Selenium все равно реализует его. – BoltClock

+0

': contains()' было только предложением, и оно упало между 7 и 11 годами назад, задолго до [CSS3 Selectors] (http://www.w3.org/TR/2011/REC-css3-selectors- 20110929). Люди должны преодолеть это, это никогда не возвращается :-) –

+0

Selenium не реализует ': contains()'. Но в зависимости от браузера, который вы используете, браузер может, или Selenium может вернуться к использованию [Sizzle] (http://en.wikipedia.org/wiki/Sizzle_ (selector_engine)), что и делает. Так что это безусловное предложение, и его следует избегать. –

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