2010-01-04 4 views
0

J'utilise Cucumber + Webrat + Mechanize adaptateur et que vous souhaitez tester le contenu des pages qui sont encadrées ou encadrées dans la page sélectionnée.Webrat vérifier le contenu dans iframe ou frameset

En d'autres termes:

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 

Le problème est bien sûr la dernière étape: je dois naviguer dans l'en-tête de trame et enquêter sur son contenu. Je peux vérifier la balise frame est ici

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

Cela me laisse avec deux questions:

  1. Comment lire l'attribut src et accédez à cette page
  2. Comment pour revenir à la page d'origine

Répondre

0

Cela répondre à la première partie de la question

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

vous n'avez pas réellement à le faire de cette façon. Parce que votre navigateur charge déjà automatiquement les images, il vous suffit de dire au sélénium (et donc au webrat) quelle image vous voulez regarder.

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

J'utilise mécaniser et non le sélénium pour que mon test à exécuter sans tête. J'aime le DSL que vous avez posté, cependant. Mais cela ne semble pas être implémenté dans l'adaptateur webrat/mechanize. –

+0

Ah oui, je n'ai pas remarqué où vous avez dit que c'était mécanisé. J'aimerais pouvoir l'utiliser, mais je dois aussi tester un tas d'appels Ajax. –

0

essayer cela dans la définition de l'étape:

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