Огурец + вебрат + селен, как игнорировать скрытый текст?

Я использую Cucumber, webrat и selenium для тестирования веб-приложения. Я использую "Я должен что-то увидеть", чтобы проверить изменения. Однако во многих местах проверяемый текст меняется со скрытого на видимый (это может быть вызвано удалением «скрытого» класса из самого себя или одного из его предков). В этом случае приведенный выше тест фактически не проверяет изменение. Я пытаюсь использовать response.should_not have_tag ("div # myId.hidden"), который не работает. Как рекомендуется это проверить?

Окружение: огурец 0.3.11, селен-клиент 1.2.17, webrat 0.6.0

Спасибо.


person Guoliang Cao    schedule 31.12.2009    source источник


Ответы (3)


В таких случаях я использую эти два пользовательских шага:

Then /^the element matched by "([^\"]*)" should be visible$/ do |locator|
  selenium.should be_visible(locator)
end

Then /^the element matched by "([^\"]*)" should not be visible$/ do |locator|
  selenium.should_not be_visible(locator)
end

Поместите их в файл Ruby в каталоге step_definitions /.

Итак, в вашем случае вместо Тогда я должен увидеть «что-то» используйте Тогда должен быть виден элемент, соответствующий «чему-то».

person Michał Kwiatkowski    schedule 31.12.2009
comment
Должен ли локатор быть селектором CSS или каким-то текстом на странице? - person Guoliang Cao; 31.12.2009
comment
selenium.should be_visible div # myId выдает эту ошибку: Element div # myId not found (Selenium :: CommandError) Я уверен, что это действительный селектор css. Что могло пойти не так? - person Guoliang Cao; 31.12.2009
comment
Используйте css = div # myId (подробнее об этом читайте здесь: seleniumhq.org/ docs / 04_selenese_commands.html # locating-by-css). - person Michał Kwiatkowski; 31.12.2009
comment
Если это работает независимо от того, как я делаю часть видимой / невидимой, тогда лучше, чем вручную проверять наличие скрытого класса. Я посмотрю, так ли это. Большое спасибо. - person Guoliang Cao; 04.01.2010
comment
Да, он работает, ища свойства visibility: hidden или display: none. Полный текст документов см. В release.seleniumhq.org/selenium-remote-control/1.0-beta-2/doc/ - person Michał Kwiatkowski; 05.01.2010

Работает ли это при использовании вместо этого have_selector ("div # myId.hidden")?

person schmitzelburger    schedule 31.12.2009

Принятое решение не работает со следующей средой: Rails (3.0.0), webrat (0.7.3), selenium-client (1.2.18), cucumber (0.10.)

Теперь решение, которое работает с примером, приведенным в ответе, таково:

Then /^the element matched by "([^\"]*)" should be visible$/ do |locator|
  selenium.is_visible(locator).should be_true
end

Then /^the element matched by "([^\"]*)" should not be visible$/ do |locator|
  selenium.is_visible(locator).should_not be_true
end
person zealoushacker    schedule 28.01.2011
comment
Где установлен selenium? Я получаю неопределенный метод is_visible для nil: NilClass - person RyanJM; 01.05.2012