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

Я знаю частичное значение атрибута в документе,но не все. Есть ли символ, который я могу использовать для представления какой-либо ценности? Например, значением метки для ввода является "A. Choice 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 и т. д. Но я знаю, что правильный ввод всегда будет иметь текст выбора 1 рядом с ним. Как сказать, чтобы выбрать его, если метка содержит выбор 1, а не равных к выбор 1?

2 ответов


ваше выражение XPath должно выглядеть так:

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

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

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


нашел решение Рональда, пытаясь найти способ проверить, имеет ли узел атрибут "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!='']