Я новичок с точки зрения автоматизации тестирования (пожалуйста, прости меня, если мои попытки плохие, я попытался Google и прошел через кучу вещей, которые, казалось, имеют смысл для меня), и у меня есть проект, который имеет Реактивный / редукционный интерфейс. Я использую webdriver.io для автоматизации, потому что другие решения, такие как testcafe или cypress, не работали с нашим потоком авторизации.
Внешний интерфейс грязный, у него еще нет идентификаторов, а классы имеют идентичные имена для несколько вещей, но я создаю запрос функции для этого.
Тем временем, я хочу отправить значения в 3 различных поля. Вот элементы из вкладки Chrome elements:
<div class="user-settings">
<div class="table">
<div class="row">
<div class="cell">
<label class="textfield-with-label textfield-with-label--full-width"><span class="textfield-label">Phone</span>
<input type="text" class="textfield textfield--valid-value textfield--raised textfield--full-width" value="">
</label>
</div>
</div>
<div class="row">
<div class="cell">
<label class="textfield-with-label textfield-with-label--full-width"><span class="textfield-label">Agent identifier</span>
<input type="text" class="textfield textfield--valid-value textfield--raised textfield--full-width" value="">
</label>
</div>
</div>
<div class="row">
<div class="cell">
<label class="textfield-with-label textfield-with-label--full-width"><span class="textfield-label">Password</span>
<input type="password" class="textfield textfield--valid-value textfield--raised textfield--full-width" value="">
</label>
</div>
</div>
<div class="row">
<div class="cell">
<label class="checkboxfield-with-label"><span class="checkboxfield-label">Receive voice calls</span>
<input type="checkbox" class="checkboxfield">
</label>
</div>
</div>
<div class="row">
<div class="update-action">
<div class="update-button">
<button type="text" class="action-button action-button--icon action-button--text action-button--settings action-button--tick" title="Update"><i class="icon-wrapper icon-tick" aria-hidden="true"><svg focusable="false" role="img" viewBox="0 0 48 48"><use xlink:href="#icon-tick"></use></svg></i><span class="action-button__text">Update</span></button>
</div>
</div>
</div>
</div>
Я хочу отправить значения для "Телефон", "Идентификатор агента", "Пароль", но я, вероятно, буду бороться с другими элементами на этой вкладке (Получить голос и кнопку Обновить).
Если я попытаюсь:
const Extension = $('input.textfield textfield--valid-value.textfield--raised.textfield--full-width');
Extension.setValue('value');
Это работает, но только для первого поля, вероятно, потому что это первое элемент. Для второго и третьего он не будет работать, как можно достичь того же, но для всех 3 элементов?
Я также пробовал это для первых 2 элементов, потому что я думал, что это может работать:
const AgentID = $("span.textfield-label='Agent identifier'");
AgentID.setValue('value2');
Но это не имеет особого смысла для меня, и это не работает. Я изо всех сил пытаюсь понять эти селекторы и отсутствие идентификаторов или несколько уникальных имен классов, безусловно, не поможет.