Всем доброго времени суток. возник вопрос. Тестирую js валидацию формы используя acceptanceCest. На страницы имеем вот такой радиобатн:
Надо выбрать любой из них. Пробывал использовать и
$I->selectOption('form#reg_form input[name=sex]', 'мужчина');
и
$I->selectOption('form#reg_form input[name=sex]', 'male');.
ответ всегда один,
[Facebook\WebDriver\Exception\ElementNotVisibleException] element not visible
Подскажите, как правильно выбрать чекнуть такой элемент?
Помогло вот такое решение
$I->click('form#reg_form>div.row>div.form-group>div.col-sm-6>label.label-input-check');
1 лайк
Defender
(Дмитрий Мирошник)
21.Декабрь.2016 15:35:09
#3
Я подозреваю, дело в том, что по данному локатору находится больше, чем 1 элемент. И 1-й, который находится - hidden. Это легко проверить, задав “найти все” (findAll в Selenium), вместо “найти” по этому локатору и посмотреть на количество.
oleksii
22.Декабрь.2016 15:42:02
#4
Дело в том Codeception ищет радиобатн по одному из шаблонов которые заложены внутри. В процессе дебага я нашел какие xpath он формирует:
ancestor::form//input[@type = ‘radio’][$SELECTOR][(@id = ancestor::form//label[contains(normalize-space(string(.)), $OPTION)]/@for ) or @placeholder = $OPTION]
ancestor::form//label[contains(normalize-space(string(.)), $OPTION))]//input[@type = ‘radio’][$SELECTOR]
ancestor::form//input[@type = ‘radio’][$SELECTOR][@value = $OPTION)]
где $SELECTOR и $OPTION это то что ты передаешь в selectOption.
Т.е. если хочется юзать selectOption либо разметку переделать либо уже другое решение как у тебя.