Как я могу определить этот элемент - PullRequest
0 голосов
/ 13 марта 2020

Я хочу идентифицировать этот элемент «Вопрос с текстовым ответом», который не имеет уникального идентификатора, класса или атрибута.

Я пробовал это:

@FindBy(css = "body")

Может кто-нибудь, пожалуйста, помогите мне чтобы найти это?

Вот это HTML:

<tr valign="top" xpath="1">
   <td width="80%">
      <div id="div-4fd242f670a4bc4e0170beb543d72c66" class="wordwrap" style="padding-left:20px;padding-top:3px;">
         <label for="name" class="portlet-form-field-label">
         2.
         Question With Text Response<span style="color:red;">*</span>
         </label>
         <br>
         <textarea id="4fd242f670a4bc4e0170beb543d72c66" name="answers[4fd242f670a4bc4e0170beb543d72c66]" class="portlet-form-input-field answers[4fd242f670a4bc4e0170beb543d72c66]  comment" style="width:90%;" onkeydown="return imposeMaxLength(event, this, 3999);" onblur="return imposeMaxLength(event, this, 3999);" rows="7"></textarea>    				
      </div>
   </td>
</tr>

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Вы можете найти элемент, используя его текст в xpath.
Вы можете сделать это следующим образом:

WebElement element = driver.findElement(By.xpath("//label[contains(text(),'Question With Text Response')]"));
0 голосов
/ 13 марта 2020

В соответствии с вашей HTML структурой label и textarea являются родственными тегами. Чтобы найти текстовую область на основе текста метки,

Используйте ниже xpath:

@FindBy(xpath = "//label[contains(.,'Question With Text Response')]/following::textarea")

Объяснение:

//label[contains(.,'Question With Text Response')] - найти метку, содержащую текст 'Вопрос с текстовым ответом'

/following::textarea или /following-sibling::textarea - найти текст, следующий за меткой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...