Каратэ - как сопоставить тест в глубоко расположенном тэге - PullRequest
1 голос
/ 23 апреля 2020

Я использую каратэ и нахожу способ сопоставления значений в глубоко расположенном диапазоне.

У меня есть такой случай:

...
<form action="#">
  <div class="row">
    <div class="col-lg-12">
      <div class="card shadow mb-4">
         <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
         <div class="card-body">
            <p>...</p>
            <div class="form-group " style="display: grid; grid-template-rows: auto auto;">
               <span>
                   <label for="title">Title</label>
                   <input name="title" id="title" class="form-control" placeholder="e.g. My MacBook Key" value="">
               </span>
               <span class="invalid-feedback">Title is required</span>
            </div>
            <div class="form-group " style="display: grid; grid-template-rows: auto auto;">
               <span>
                   <label for="key">Key</label>
                   <textarea name="key" id="key" class="form-control" rows="12" placeholder="Typically starts with &quot;ssh-rsa&quot; or &quot;ssh-ed25519&quot;"></textarea> 
               </span>
               <span class="invalid-feedback">Key is required</span>

Мне нужно проверить значение последнего диапазона (с использованием соответствия) - последняя строка (если «span требуется» присутствует в span).

Я пробовал некоторые варианты кода, но мне это не удалось. Например:

* match text('form/div/div/div/div:2/div:2/span:2') == 'Key is required'

или

* match text('{span:2}.invalid-feedback') == 'Key is required'

Есть идеи, как решить эту проблему, не используя полный xpath?

Спасибо.

1 Ответ

1 голос
/ 23 апреля 2020

Существует очень простой способ сделать это:

* def messages = scriptAll('.invalid-feedback', '_.innerHTML')
* match messages[1] == 'Key is required'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...