2015-11-09 3 views
0

Я не могу получить свой тест, чтобы установить флажок. Пробовал всевозможные подсказки, найденные в Google, но ничего не работает.Невозможно установить флажок с помощью Capybara

Источник флажка является

<div class="ish-field buttons-conditions"> 
<div class="accept-conditions"> 
<input tabindex="30" 
type="checkbox" 
class="ish-input-regular-news" 
id="RegisterUserFullEmail_Accepted-1" 
value="true" 
name="RegisterUserFullEmail_Accepted" 

Флажок виден на странице. Я бы ожидал, что вы сможете просто сделать: check("RegisterUserFullEmail_Accepted-1") но это не работает.

Любые предложения?

+0

Какой драйвер вы используете с Capybara? Какую ошибку вы точно получаете? Что заставляет вас сказать, что «флажок виден на странице»? Вы пытались найти (: css, «# RegisterUserFullEmail_Accepted-1»), чтобы увидеть, действительно ли вход на странице, или найти (: css, «# RegisterUserFullEmail_Accepted-1», visible:: hidden), чтобы увидеть, страницы, но невидимой? –

+0

Спасибо за ответ! – andreheijstek

+0

Спасибо за ответ! Я заявил, что «отображается на странице», потому что я вижу флажок на отображаемой странице. Но, возможно, это было слишком упрощенным. Только 'find (: css," # RegisterUserFullEmail_Accepted-1 ", visible:: hidden)' дает результат, поэтому это означает, что флажок действительно не отображается. Правильно? Я попытался следующее: 'find (: css," # RegisterUserFullEmail_Accepted-1 ", visible:: hidden) .set (true)'. Но это дает ошибку: Элемент в настоящее время не виден и поэтому не может взаимодействовать с (Selenium :: WebDriver :: Error :: ElementNotVisibleError). – andreheijstek

ответ

0

На странице, на которую вы пытаетесь управлять https://www.plus.nl/registreren, флажки на самом деле скрыты с помощью css display: none, а затем css :: before псевдоэлемент используется для вставки изображения проверяемого или непроверенного поля (возможно, чтобы сделать флажки выглядят согласованно во всех браузерах). Из-за этого вы не можете просто установить флажок, вместо этого вы можете щелкнуть по метке для флажка. В этом случае одно из следующих действий следует сделать

find(:css, 'label', text: 'Ik accepteer de accountvoorwaarden').click 
find(:css, 'label[for="RegisterUserFullEmail_Accepted-1"]').click 

, так как в этом случае метка имеет связь внутри него, которая появляется, чтобы быть в середине линии (где он получил бы щелкнул) мы можем посмотреть на то, что else находится в ярлыке, и в нем есть отдельный элемент span, на который мы можем щелкнуть, не нажимая на ссылку, так что

find(:css, 'label', text: 'Ik accepteer de accountvoorwaarden').find(:css, 'span').click 
find(:css, 'label[for="RegisterUserFullEmail_Accepted-1"] span').click 
+0

Спасибо за вашу поддержку. Том! Однако оба они еще не работают. Оба кликают по ссылке с «account voorwaarden» (условия), а не на флажке. Есть идеи для этого? – andreheijstek

+0

Хммм - они нажмут в середине метки, что, к сожалению, может оказаться связанным словом - глядя на html, есть отдельный элемент span с * внутри него внутри метки, чтобы можно было щелкнуть по нему - - добавление примеров к моему ответу –

+0

Ты потрясающий. Оба примера работают как шарм! – andreheijstek

Смежные вопросы