2010-01-04 2 views
0

Я использую адаптер Cucumber + Webrat + Mechanize и хочу протестировать содержимое страниц, которые iframed или обрамлены на выбранную страницу.Webrat проверить содержимое в iframe или frameset

Другими словами:

Scenario: View header on webpage 
    Given I visit a page containing a frameset 
    When there is a header frame 
    Then I should see login details in frame header 

Проблема, конечно, последний шаг: Мне нужно, чтобы перейти к заголовку кадра и исследовать его содержимое. Я могу проверить кадр тег здесь

response_body.should have_selector "frame[src][name=header]" 

Это оставляет меня два вопроса:

  1. Как читать атрибут Src и перейдите на эту страницу
  2. Как вернуться обратно на исходную страницу

ответ

0

Это ответ на первую часть вопроса

Then /^I should see login details in frame header$/ do 
    within 'frame[name=header]' do |frame| 
    frame_src = frame.dom.attributes["src"].value 
    visit frame_src 
    response_body.should contain "Log in with digital certificate" 
    response_body.should_not contain "Log out" 
    end 
end 
0

Вы действительно не должны так поступать. Поскольку ваш браузер уже загружает фреймы автоматически, вам просто нужно указать селен (и, следовательно, webrat), кадр, на который вы хотите посмотреть.

When /^I select the "(.*)" frame$/ do |name| 
    selenium.select_frame("name=#{name}") 
end 
+0

Я использую механизировать и не селен для того, чтобы мой тест для запуска без головы. Тем не менее, мне нравится DSL. Но, похоже, это не реализовано в адаптере webrat/mechanize. –

+0

Ах, я не заметил, где вы упомянули, что это механизировано. Хотелось бы, чтобы я мог использовать это, но должен также проверить кучу вызовов Ajax. –

0

попробовать это в определении шага:

within_frame("headerid") do 
    assert page.has_content? "login details" 
end