Как бы кликнуть на другой элемент

У меня есть HTML, созданный Drupal, который выглядит примерно так (в упрощенном виде)

<fieldset data-drupal-selector="ts-and-cs" id="edit-fieldset-ts-and-cs" class="js-form-item">
<label class="js-form-type-checkbox js-form-item-ts-and-cs" data-validation="single-checkbox">
<input required="required" class="required form-checkbox" data-drupal-selector="edit-ts-and-cs" type="checkbox" id="edit-ts-and-cs" name="ts_and_cs" value="1" aria-required="true">
<span class="checkbox-label">I have read and agree to <a href="http://domain/tc.pdf">Terms & Conditions</a> *</span>
</label>
</fieldset>

Благодаря причудливым CSS и JS, есть хороший флажок, встроенный в CSS, который прикреплен к псевдоэлементу span as :: before, так что окончательно отрендеренный HTML выглядит примерно так

<span class="checkbox-label">
::before
"I have read and agree to "<a href="http://domain/tc.pdf">Terms & Conditions</a>
" *"</span>

В то же время элементы ввода, конечно же, становятся скрытыми и недоступными для Behat, и любая попытка его перехватить приводит к таким ошибкам:

When I check "edit-ts-and-cs"Element is not currently visible and so may not be interacted with

Теперь проблема в том, что пользователь действительно нажимает, чтобы подтвердить согласие с T&Cs эффективно span.checkbox-label::before но такой селектор отклонен, так как CSS селектор не поддерживает их https://symfony.com/doc/current/components/css_selector.html и это важнейший компонент реализации Mink для PHP, выбрасывающий подобные ошибки

 Pseudo-elements are not supported. (Symfony\Component\CssSelector\Exception\ExpressionErrorException)

Когда я пытаюсь пропустить :: before в селекторе, любая попытка вызывает действие щелчка, чтобы перехватить существующую ссылку и следует за href и перемещается от страницы к документу PDF.

Любая идея, как решить это и заставить Behat произвести правильный щелчок JS?

Это, конечно, все о режиме @Javascript. Нет проблем работать в не JS-режиме и проверять входы напрямую, так как в этом случае они видны.

2

Решение

В конце мне пришлось изменить HTML и обернутый исходный текст, который также можно кликать с дополнительным элементом span, так что в конце это выглядит так:

<span class="checkbox-label">
::before
<span>I have read and agree to</span>
<a href="http://domain/tc.pdf">Terms & Conditions</a>
" *"</span>

который стал выбираемым и кликабельным

When I click on element "#edit-fieldset-ts-and-cs span.checkbox-label span"

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]