Sto utilizzando capibara per testare la mia applicazione di rotaie per i test di integrazione. Nella mia applicazione ci sono molte lightbox e chiamate Ajax e js.Come aggiungere le condizioni di attesa negli scenari di capibara?
@javascript
Scenario: I agree functionatilty
Given I go to the create account page
When I click on button which is given as image "lnkTerms2"
And I follow "i_agree"
Then I go to the create account page
Qui in lnkTerms2 codice di cui sopra è e id, che contribuirà a chiamando la funzione js per aprire un lightbox. E sto ottenendo un errore come
Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotDisplayedError)
[remote server] resource://fxdriver/modules/atoms.js:9519:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:256:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:305:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:320:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/[email protected]/components/nsCommandProcessor.js:197:in `unknown'
(eval):2:in `send'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:300:in `/^I click on button which is given as image "([^"]*)"$/'
features/Sign_up_process.feature:61:in `When I click on button which is given as image "lnkTerms2"'
Il problema è come questa funzione chiamata in WebDriver, non è sempre tempo per caricare javascript e le chiamate Ajax. E lightbox non si sta aprendo. Quindi, per favore suggeriscimi qualsiasi soluzione.
anche se supponiamo che scrivo la linea
When I click on button which is given as image "lnkTerms2"
dopo 4 a 5 dichiarazioni, allora sta lavorando bene, come si arriva il momento di caricare js.
non è una buona soluzione, aggiunge un ritardo forzato all'esecuzione del test, se riutilizzato può aggiungere molto tempo. il modo corretto per risolvere questo problema è attendere che un elemento sia visibile. – Benja
qualsiasi forma di sonno fisso, anche se sta prendendo il valore dallo scenario è generalmente una pessima idea, a meno che lo scenario non sia in realtà sull'esperienza utente che implica l'attesa di quella specifica quantità di tempo (a differenza dell'aspettare il display per aggiornare ecc. , ad esempio "sincronizzazione") –