Подтвердить что ты не робот

XPath, частичный атрибут, известный

Я знаю частичное значение атрибута в документе, но не все. Есть ли символ, который я могу использовать для представления любого значения? Например, значением метки для ввода является "A. Выбор 1". Я знаю, что это говорит "Выбор 1", но не будет ли он говорить "A." или "B." перед "выбором 1". Ниже приведен соответствующий HTML. Существуют и другие атрибуты для ввода и метки, но они не одинаковы при каждой странице, поэтому я не могу использовать их в качестве ссылок:

<tr>
<td><input type="checkbox" /><label>A. Choice 1</label></td>
</tr><tr>
    <td><input type="checkbox" /><label>B. Choice 2</label></td>
</tr><tr>
<td><input type="checkbox" /><label>C. Choice 3</label></td>
</tr><tr>
     <td><input type="checkbox" /><label>D. Choice 4</label></td>
</tr>

Это XPath выражение, которое я использую, чтобы выбрать ввод рядом с меткой со значением "Выбор 1", за исключением того, что A находится перед ним в HTML:

//td[label="Choice 1"]/input

Я не знаю, будет ли A в HTML быть A, B или C и т.д. Но я знаю, что правильный ввод всегда будет содержать текст Choice 1 рядом с ним. Как я могу сказать, чтобы выбрать его, если метка содержит выбор 1, а не равна выбору 1?

4b9b3361

Ответ 1

Ваше выражение XPath должно выглядеть следующим образом:

//td[contains(@label, 'Choice 1')]/input

Вы выбираете все элементы td, у которых есть метка, содержащая Choice 1, и затем вы выбираете элементы input внутри этих элементов td.

EDIT: комментарий Томалака правильно указывает на улучшение, чтобы предотвратить совпадение с "выбором 11" (или "Выбор 12345",...).

Ответ 2

Найденное решение Ronald, пытаясь найти способ проверить, имеет ли node атрибут 'align', который не является пустым, или атрибут 'style', который содержит текстовое значение 'text-align'. Это "узлы", о которых идет речь:

<node> 
  <p>This is left-aligned.</p> 
  <div align="left" >This is aligned LEFT using HTML attribute.</div> 
  <p style="text-align: center;" >This is centered using CSS style attribute.</p> 
  <div align="center" >This is CENTERED.</div> 
  <p style="text-align: right;" >This is right-aligned.</p> 
</this>

Это выражение xpath работало - благодаря ответу Рональда, который указал мне в правильном направлении:

//*[contains(@style, 'align') or @align!='']