2010-09-06 4 views

Répondre

4

Une bonne manipulation des alertes et des invites est encore being worked on dans WebDriver, mais une solution courante consiste à remplacer les fonctions de la fenêtre à l'aide execute_script(), à savoir

browser.execute_script("window.alert = function(msg) { window.lastAlert = msg; }") 
browser.button(:id => "trigger-alert").click 
browser.execute_script("return window.lastAlert") #=> "the message" 

Depuis que je voudrais éviter un tas de singe patches flottant autour (un problème commun dans la communauté Watir), j'ai ajouté quelques helper methods en option exigent - après la prochaine version, vous devriez être en mesure de le faire:

require "watir-webdriver/extensions/alerts" 

browser.alert do 
    browser.button(:id => "alert").click 
end #=> "the alert message" 

browser.confirm(true) do 
    browser.button(:id => "confirm").click 
end #=> "the confirm message" 

browser.prompt("returned value") do 
    browser.button(:id => "prompt").click 
end #=> { :message => "foo", :default => "bar" } 

Notez que ceci est temporaire et l'API mai être supprimé à l'avenir lorsque le problème est résolu dans WebDriver.

MISE À JOUR:

manipulation d'alerte appropriée est maintenant mis en œuvre. L'exemple ci-dessus serait maintenant fait comme ceci:

browser.button(:id => "alert").click 
browser.alert.ok 

browser.button(:id => "confirm").click 
browser.alert.ok # or browser.alert.close 

browser.button(:id => "prompt").click 
alert = browser.alert 
alert.text #=> "foo" 
alert.ok 
+0

J'ai eu une erreur en utilisant browser.alert et je l'ai corrigé avec un hack, mais vous pourriez vouloir jeter un oeil: http://gist.github.com/569969 – rtacconi

+0

Le comportement actuel est correct - si le bouton doesn n'existe pas, cela devrait provoquer une erreur. L'idée est que vous allez écrire votre propre code dans le bloc qui déclenchera l'alerte. – jarib

+0

Désolé, je l'appelais au mauvais endroit. Cependant j'ai essayé votre code mais ne clique sur aucune alerte: assert_exists ': impossible de localiser l'élément, en utilisant {: value => "OK",: tag_name => "button"} – rtacconi

1

Je sais que le addon iMacros for Firefox peut cliquer sur ces boîtes d'alerte. Peut-être que vous pouvez le combiner avec notre configuration?

Questions connexes