Я использую capybara, чтобы установить флажок, однако он не может найти его независимо от того, что я делаю. Я могу правильно найти как пролет, так и метку внутри пролета, но не тот ввод, который мне действительно нужен.Capybara: Не удалось найти css
Вот флажок
<span class="checkbox tos">
<input id="agreement" name="agreement" onclick="agreeValidate();" type="checkbox" value="false">
<label for="agreement">I accept the <a href="http://www.dev.com:3000/terms" target="_blank">Terms of Use</a>, <a href="http://www.dev.com:3000/privacy" target="_blank">Privacy Policy</a>, and am at least 13 years old</label>
</span>
А вот некоторые из вещей, которые я попробовал
page.check('agreement')
find(:css, '#agreement').set(true)
find('#agreement').set(true)
find('#agreement').click
Однако, все они дают мне ту же ошибку
Unable to find css "#agreement" (Capybara::ElementNotFound)
Я также интересно, будет ли какой-либо из этих методов отключить метод onclick
, когда будет установлен флажок? Я чувствую, что find(:css, '#agreement').set(true)
не запускает событие onclick
. Однако я не уверен в этом.
Update
Я также попытался выбрать элемент с помощью XPath. Вот различные вещи, я обнаружил
find(:xpath, '//*[@id="registration"]/span[2]')
Это может не найти самый span
элемент не проблема
find(:xpath, '//*[@id="registration"]/span[2]/input')
Это не может найти элемент Мне нужно, но это XPath правильно выбирает элемент в консоли Хрома
find(:xpath, '//*[@id="agreement"]')
Это не может найти элемент Мне нужно, но XPath выбирает элемент в консоли Хрома
find(:xpath, '//*[@id="registration"]/span[2]/label')
Это может найти элемент label
в span
без проблем.
Пожалуйста, пост больше кода. В отдельности это выглядит так: 'find ('# agreement')' должен работать, чтобы найти этот флажок, поэтому, если это не работает, может быть что-то не так с окружающим кодом (возможно, он не загружает страницу правильно, или, возможно, на странице есть недопустимая разметка). –
Какова ценность 'Capybara.default_wait_time'? –