2014-02-19 4 views
5

Мне нужно проверить в Capybara, если на странице есть текстовое поле ввода и доступно для просмотра. Я знаю, как проверять видимость, но я не мог найти такой метод, как .clickable или что-то в этом духе. Как это делается в Капибаре?Как проверить в Capybara, если элемент можно щелкнуть?

+0

Все кликабельна , Я могу взять мою мышь и нажать на все. Вопрос в том, что вы действительно пытаетесь проверить? Может быть, вы хотите протестировать, если у вас есть свой собственный класс «do-not-click» CSS? Может быть, вы хотите проверить это, если его щелкнули, он не подсвечивается? И т. Д. Это определит, как вы тестируете, если это - не кликабельно, - но если с ним можно взаимодействовать или нет, в пределах вашего приложения. – MrDanA

+0

Мое намерение - проверить, что если я нажму на поле, курсор в нем начнет мигать. –

+1

Я думаю, что это зависит от браузера. Вам не нужно ничего делать, чтобы получить эту функциональность. Поэтому, если это видно, и поле ввода, нажатие на него получит этот результат. В противном случае, если это не видно, его нельзя нажать, так что все в порядке. Я не думаю, что вам нужно что-то проверять на кликабельность, просто наглядность. – MrDanA

ответ

1

Полагая это как ответ, из комментариев по оригинальному вопросу.

Вам не нужно проверять возможность клики (при получении поля ввода при мигании), потому что я думаю, что это зависит от браузера. Вам не нужно ничего делать, чтобы получить эту функциональность. Поэтому, если это видно, и поле ввода, нажатие на него получит этот результат. В противном случае, если это не видно, его нельзя нажать, так что все в порядке. Я не думаю, что вам нужно что-то проверять на кликабельность, просто наглядность.

1

Элемент может быть «видимым» без нажатия. Я на самом деле работаю над поиском обходного пути для выбора кнопки, которая находится за непрозрачной прокладкой. Я хочу, чтобы иметь возможность сказать что-то вроде:

if find_button("Change Location").visible? 
    click it 
else 
    something else 
end 

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

+0

У меня такая же проблема, случается, когда появляется модальная мода, а остальная часть страницы становится непрозрачной, но все же видимой. Мое обходное решение улавливает повышенное исключение. Selenium :: UnknownError - не является кликабельным и возвращает логическое значение false, если я получаю исключение, true в противном случае. Я использую это только в том случае, если проверяю отрицательный is_not_clickable. – ibaralf

4

Похоже, что потребности OP были удовлетворены, но для будущих исследователей, вот некоторые инструменты, чтобы узнать, можно ли что-то щелкнуть.

Тест может ли быть нажата вещь (Rspec & & Капибара):

it "is clickable" do 
    expect{ find('.your_selector').click } 
    .not_to raise_error(Capybara::Poltergeist::MouseEventFailed) 
end 
it "isn't clickable" do 
    expect{ find('.your_selector').click } 
    .to raise_error(Capybara::Poltergeist::MouseEventFailed) 
end 

Нажмите, если это возможно, и сделать что-то еще, если нет, то в ответ Джо Susnick в:

clickable = expect{ find('.your_selector').click }.not_to raise_error(Capybara::Poltergeist::MouseEventFailed) 
if clickable 
    plan_a 
else 
    plan_b 
end 
Смежные вопросы